Pas*_*ten 7 python automation pip
有没有办法修改python/pip,每当导入在运行时失败时,它会尝试从pip安装模块(同名)然后导入模块?
我会说这是一个更好的默认值而不是抛出一个错误.如果从pip加载模块后发生任何问题,那么它也会抛出错误,类似于我注意到我无法导入的东西,尝试pip install
然后得到相同的错误消息.
我知道我们可以requirements.txt
用来捆绑一个包,但我是从"客户端"(运行脚本的人)而不是"提供者"(提供脚本的人)角度谈论的; 也就是说,作为客户端,我希望能够导入任何脚本并自动解决依赖关系.
我知道这可能会带来麻烦,但每当我看到一个ImportError时,我都会尝试使用pip install
该模块.只有在pip安装后模块不能正常工作"我才能提出进一步的问题".
我想到了像python进程"内置"的这个片段:
def getDirectoryOfInterpreter(p):
return "someway to return the directory"
try:
import somemodule
except ImportError:
os.system(getDirectoryOfInterpreter('THIS_INTERPRETER_BINARY') + ' pip install ' + "MODULE_NAME")
import somemodule
Run Code Online (Sandbox Code Playgroud)
Ant*_*hon 12
使用时,您可以使用pipimport执行此操作virtualenv
.它可能适用于系统python,如果你有适当的权限来编写必要的目录(至少site-packages
,你的导入可能有一些命令,pip
试图把某些地方放在PATH中).因为总是使用virtualenvs为你自己的开发是好的做法,我从来没有尝试过使用pipimport
系统python.
您需要手动将pipimport导入virtualenv:
virtualenv venv
source venv/bin/activate
pip install pipimport
Run Code Online (Sandbox Code Playgroud)
然后创建一个autopipimport.py
首先在任何模块中导入的文件:
# import and install pipimport
import pipimport
pipimport.install()
Run Code Online (Sandbox Code Playgroud)
现在,在任何其他.py
文件中,您可以执
import autopipimport
import some.package.installable.by.pip
Run Code Online (Sandbox Code Playgroud)
我曾尝试过(好奇心自动)将两条与pipimport相关的行添加venv/lib/python2.7/site.py
到自动"加载",但那是在链的早期并没有奏效.
pipimport
将只尝试使用pip
一次安装特定模块,存储有关.pipimport-ignore
文件中已尝试的内容的信息(venv
除非不可写,否则应该在下面).
归档时间: |
|
查看次数: |
4069 次 |
最近记录: |