Pra*_*tal 0 python virtualenv dependency-management
许多软件包都要求系统用户先安装一组依赖项,然后才能使用该软件。(这是一个通用问题,并非特定于python,但我将在python的背景下进行讨论。)。如果尚未安装依赖项,我们能否在执行代码之前让python模块安装其自身的依赖项。这应该可以在system或subprocess呼叫的帮助下完成,但我很少看到有人这样做。
例如,假设lib是一个需要在python文件main.py中使用的python 库:
import os
try:
import lib
except:
os.system('pip install pdir')
import lib
# Can make use of lib now
Run Code Online (Sandbox Code Playgroud)
这种方法有什么潜在的错误吗?这样做会给大型项目带来麻烦吗?
注意:这样做的好处是,使用该文件的用户不必单独安装依赖项,只需运行即可python main.py。我意识到的第二件事是,这种方法仅在virtualenv使用时才有意义。
您永远不要这样做-pip没有依赖关系解析,因此无法保证您将获得特定版本。依赖关系应该用安装setup.py,requirements.txt或者不同的方法。
您也不需要用户权限或sudo来安装仅用于运行代码的软件包。用户应该了解安装软件包所需的软件包,因为它们可能来自PyPI或操作系统的软件包系统或内部公司的PyPI镜像-在这种情况下,静默安装依赖项不是一个好主意。
| 归档时间: |
|
| 查看次数: |
492 次 |
| 最近记录: |