在Python2.7中部署在Python3.6(Anaconda)中创建的包

2024-10-08 19:19:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经创建了一个从sharepoint中提取数据的代码,它在我的本地环境(Spyder Python 3.6)中工作得很好。 但当我尝试在生产环境(python2.7.12)上部署它时,由于缺少一个加密包,它失败了。 当我尝试将github中的加密技术添加到python2.7库中时,它失败了,丢失了文件\u constant\u time。 但是,当我尝试将库文件从anaconda(python3.6)复制到production(python2.7)时,\u constant\u time文件在那里,但它现在显示cannotimport lib error。你知道吗

为什么github和anacondaforcryptography库上的文件存在差异,以及如何解决这个问题? PS-我无法更改Python2.7的产品版本

import sys
from os.path import join as filejoin
from  os.path import dirname as file_dirname
from os.path import abspath as file_abspath



binPath=file_dirname(sys.argv[0])
CustomLibraryPath=filejoin(file_abspath(binPath+'/../..'),'CustomLibrary')
print(CustomLibraryPath)
sys.path.append(CustomLibraryPath) 


from requests_ntlm import HttpNtlmAuth
from shareplum import Site
import pandas as pd


username = """xxxxxxx"""
password = "xxxxxxxx"
site_url="xxxxxxx"


auth=HttpNtlmAuth(username, password)
site = Site(site_url, auth=auth)
sp_list = site.List('xxxxxxx')
data = sp_list.GetListItems("All Items")



df=pd.DataFrame(data)


print (df.head())

Tags: 文件pathfromimportauth环境osas
1条回答
网友
1楼 · 发布于 2024-10-08 19:19:31

答案很简单:在生产服务器可以识别的内容和您试图从Github获取的内容之间,加密有几个不同的构建(例如,Anaconda有几个2.7.x构建的加密选项,准确地说是15https://anaconda.org/anaconda/cryptography/files),这是有意义的,因为您正试图使用两种不同的Python语言并强制使用它们但他们不了解对方。你知道吗

把你的问题想成这样:想象一下,试着用英语(或任何一种语言)和一个19世纪的人交谈-从技术上讲你们说的是同一种语言,但在200年的时间里,你们不会理解对方,因为这门语言是在复杂和复杂中进化的意思。作为参考,Python2.7.0于2010年7月发布,Python3.7于2017年发布。你知道吗

解决这个问题有一个困难的方法,也有一个简单的方法。你知道吗

更困难的方法是:找到生产服务器的确切Python版本,从Github或Anaconda下载2.7.x版本。然后删除当前的加密版本,安装兼容的加密版本。然后确保Anaconda能够识别新的分支,将其实现到您的代码中,并使其在您的生产服务器上工作。您将不得不做一些尝试和错误,以获得正确的,因为其他软件包可能有依赖性问题与您的旧版本的加密。鉴于你提出的解决方案,我相信你是在尝试。你知道吗

但是,为了避免当前的挫折感,有一种更简单的方法:在与生产服务器匹配的计算机上为Python2.7.x构建一个虚拟环境。

我会特别使用virtualenv,pip安装您的包,然后通过它实现您的代码。这样,您的代码和生产服务器使用相同的Python。我将补充一个小警告:您可能需要重写一些代码以使其正常工作,因为同样,您使用2017年的语言构建了代码,但是您正在使用2010年的Python进行转换。你知道吗

我会让你开始在下面的路径与如何设置它,但我强烈建议阅读Python.org网站虚拟环境页面,为将来的发展自我教育(有很多文章和参考指南,但从源代码开始):(https://docs.python.org/3/tutorial/venv.html

要设置虚拟环境-拉起终端并键入以下内容:

$ mkdir project_folder
$ cd project_folder
$ virtualenv -p /usr/bin/python2.7 venv

一旦运行,您将需要激活它:

$ source venv/bin/activate

从那里你应该可以使用pip来获取你的模块(我会仔细检查并确保pip是为python2.7设置的->;我曾经在构建时失败过一次,并且花了几个小时试图找出我做错了什么)。 一旦安装了所有的软件包,通常会“冻结”当前的环境软件包(对于项目中的其他开发人员或以后想使用它的任何人都很方便)

$ pip freeze > requirements.txt

一旦完成了,您就可以复制代码并将程序的虚拟环境构建实现到其中。你知道吗

相关问题 更多 >

    热门问题