我有以下代码行:
from pip import main as pipmain
# initial installation
pipmain(["install", "pyscenic==0.10.0"])
import pyscenic
pyscenic.__version__
# return 0.10.0
# Some large code here
# second installation
pipmain(["install", "install", "pyscenic==0.10.4"])
import pyscenic
pyscenic.__version__
# still return 0.10.0
# Another large chunk that required new version
在那里,我想在代码中动态升级pyscenic包。 然而,正如我上面提到的,在第二次安装中,版本仍然没有改变。 我希望它会变为0.10.4。我怎样才能做好呢
我也试过了,还是没用:
import os
import importlib
os.system('pip install pyscenic==0.10.0')
import pyscenic
pyscenic.__version__
os.system('pip install pyscenic==0.10.4')
import pyscenic
pyscenic.__version__
importlib.reload(pyscenic)
pyscenic.__version__
在IPython(交互式)上测试的所有代码。 如果我退出IPython并再次进入,它将生效。 但那不是我想要的
这不是安装软件包的首选方法,即在脚本中安装软件包。即使在更新之后,大多数软件包都具有旧版本中的所有功能,并且由于您的版本更改很小,因此不会产生很多问题
但是,如果要在脚本中安装软件包,可以使用前面提到的
os.system
,但在安装其他版本之前,请先删除以前的版本,这样就可以开始了如果这不能解决您的问题,那么您可以查看此代码。这将解决在脚本中安装和卸载软件包的问题
一定要让我知道它是否有效
正如前面的几个答案(1、2)和recent requests所提到的,pip和Python并没有真正考虑到这一点
但是,通过对Python名称系统的巧妙破解,以及对您想要使用的软件包的一些了解,您可以安装两个相邻的版本:
此bash脚本克隆存储库两次,签出版本
0.10.0
和0.10.4
,通过sed
进行重命名,最后安装两个名为pyscenic100
和pyscenic104
的库:我不知道在“
# Some large code here
”期间会发生什么,但它看起来像是文档/测试工作中的示例:如果能够,一个简单的解决方案是编写一个按顺序运行两个python文件的bash文件,在两个python运行之间使用pip更改包pyscient的版本。您可以执行类似于this的操作,例如:
相关问题 更多 >
编程相关推荐