将 python 脚本及其依赖包打包在单个包中

问题描述 投票:0回答:1

我有一个情况:

在带有

Python 3.6.8
的 macOS 机器中,我编写了一个名为
publisher.py
的 Python 脚本,它使用
pycrypto
包。 一切都按预期进行。

现在,我需要将我的代码放在生产 Linux 环境的共享位置,数百名开发人员将在他们的机器上仅使用

Python 3.6.8
运行脚本。 我没有在生产 Linux 环境中安装
pycrypto
的权利/特权,我只能在那里复制一些东西。

显然,我不能强迫所有开发人员在他们的个人环境中执行

pip install pycrpto

有没有办法,我可以将单个脚本及其依赖项打包(

pycrypto
)并将其复制到生产 Linux 环境?

请推荐。

python-3.x pip package
1个回答
0
投票

回答自己,在找到解决方案时帮助他人: 简而言之,问题是“如何使使用

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

© www.soinside.com 2019 - 2024. All rights reserved.