我使用 pip 安装项目依赖项。 Pip将其所有依赖项安装到此位置
位置: /home/tara/taraproject/myvenv/lib/python2.7/site-packages
我想要完成的事情:
我想将所有依赖项放在项目中,而不是让用户在操作期间进行设置。只是试图将安装负担移除给操作团队。
我尝试了什么?
我在ProjectFolder中尝试了这个,我的工作项目存在
/家庭/塔拉/ taraprject / ProjectFolder
我创建了一个名为dependencies的目录,并尝试在其中添加所有依赖项模块。然后导入为。
from dependencies.yapsy.PluginManager import PluginManager
我还通过添加 init .py文件将目录作为模块。
Traceback (most recent call last):
File "main.py", line 16, in <module>
from dependencies.yapsy.PluginManager import PluginManager
File "/home/tara/taraproject/myvenv/checkaccess/dependencies/yapsy/__init__.py", line 73, in <module>
from yapsy.compat import is_py2, str
ImportError: No module named yapsy.compat
看起来导入正在运行,但模块的内部代码出现了这样的导入错误。
为什么要这样做?
如果我能这样做,操作团队可以轻松获取我的项目并轻松运行,无需下载依赖项并进行必要的设置。只是想让操作部分更容易
如何解决此类问题或采取何种方法?
答案 0 :(得分:1)
根据提供的说明,我相信虚拟环境可以为您的问题提供解决方案。从虚拟环境的介绍(见下面的链接):
Python应用程序通常会使用不包含的软件包和模块 作为标准库的一部分。应用程序有时需要 特定版本的库,因为应用程序可能需要 已修复特定错误或可能编写应用程序 使用库的接口的过时版本。
这意味着一个Python安装可能无法满足每个应用程序的要求。如果申请A需要 特定模块的1.0版,但应用程序B需要版本 2.0,然后要求发生冲突,安装版本1.0或2.0将使一个应用程序无法运行。
此问题的解决方案是创建一个虚拟环境,一个包含Python安装的自包含目录树 对于特定版本的Python,加上一些额外的 包。
然后,不同的应用程序可以使用不同的虚拟环境要解决先前的冲突需求示例,应用程序A可以拥有自己的虚拟环境,其中安装了1.0版,而应用程序B则具有另一个版本为2.0的虚拟环境。如果应用程序B要求将库升级到3.0版,则不会影响应用程序A的环境。
有关虚拟环境的更多信息,请访问(快速互联网搜索):
希望这有帮助。
评论后编辑。使用可重定位选项可以使虚拟环境可重定位。来自用户指南(https://virtualenv.pypa.io/en/latest/userguide/#making-environments-relocatable):
通常,环境与特定路径相关联。这意味着您无法移动环境或将其复制到另一台计算机。您可以修复一个环境以使其可重定位
另请参阅:Python3 venv: Can env directory be renamed?
希望这可以解决您的问题。