我有一个情况:
在带有
Python 3.6.8
的 macOS 机器中,我编写了一个名为 publisher.py
的 Python 脚本,它使用 pycrypto
包。
一切都按预期进行。
现在,我需要将我的代码放在生产 Linux 环境的共享位置,数百名开发人员将在他们的机器上仅使用
Python 3.6.8
运行脚本。
我没有在生产 Linux 环境中安装 pycrypto
的权利/特权,我只能在那里复制一些东西。
显然,我不能强迫所有开发人员在他们的个人环境中执行
pip install pycrpto
。
有没有办法,我可以将单个脚本及其依赖项打包(
pycrypto
)并将其复制到生产 Linux 环境?
请推荐。
回答自己,在找到解决方案时帮助他人: 简而言之,问题是“如何使使用
pip
下载的包在项目中本地可用,以便我可以将此项目发送到其他计算机,而他们不需要从互联网安装任何包。而是项目依赖关系在包内本地解决。”
解决办法是: Step.1)从标准库包中复制包目录
Crypto
,例如:PyCharm_Workspace/pythonProject/.venv/lib/python3.6/site-packages
与Python脚本一起。就我而言,我有一个带有依赖包的 python 脚本pycrypto
Step.2) 在 python 脚本中将
system environment variable
设置为本地复制的包目录的路径。因为,复制的脚本和包目录位于同一位置。因此,这两行就可以解决问题。
import sys
import os
print(os.getcwd())
file_path = os.getcwd() #'/Users/OSAO/Documents/PyCharm_Workspace/'
sys.path.append(os.path.dirname(file_path))
# Now below dependencies are resolved.
from Crypto.Hash import SHA256
from Crypto.Signature import PKCS1_v1_5
from Crypto.PublicKey import RSA
有用的链接:https://www.tutorialspoint.com/How-we-can-import-Python-modules-without-installing