有没有办法让pip多个版本的Python发挥得很好?例如,我想使用pip显式安装到我的站点2.5安装或我的站点2.6安装.
例如,easy_install我用easy_install-2.{5,6}.
并且,是的 - 我知道virtualenv,不 - 它不是解决这个特定问题的方法.
我知道明显的答案是使用virtualenv和virtualenvwrapper,但出于各种原因我不能/不想这样做.
那么我该如何修改命令呢
pip install package_name
Run Code Online (Sandbox Code Playgroud)
使pip安装默认值以外的包某处site-packages?
我开始使用Python.我已经添加了requirements.txt和setup.py我的项目.但是,我仍然对这两个文件的目的感到困惑.我读过这setup.py是为可再发行的东西而requirements.txt设计的,它是为不可再发行的东西而设计的.但我不确定这是否准确.
这两个文件真的打算如何使用?
我有一个需要特定版本模块的代码库。我还有另一个我使用的工具,它使用不同版本的模块。我试图让这两个代码库相互配合。
例如:代码库 A 需要 foomodule==1.2,代码库 B 需要 foomodule==2.0
如何使用 pip(因此通过 setup.py)安装代码库 A,以便它不会覆盖 foomodule==2.0
设置文件
setup_options = dict(
install_requires=['foomodule==1.2']
Run Code Online (Sandbox Code Playgroud)
如果我手动将foomoduledist-packages 中的文件夹名称更改为foomodule1.2,则可以通过替换代码库中所有出现的“foomodule”来解决问题。但是如何在 setup.py 期间以编程方式执行此操作?
我可以将 foomodule 安装到不同的位置,重命名它,然后将它移动到 dist-packages。有没有办法将所需的软件包安装到自定义位置?
也许是这样的:
setup_options = dict(
install_requires=[('foomodule==1.2', location_of_install)]
)
setup(**setup_options)
new_location = os.join(distutils.sysconfig.get_python_lib(), 'foomodule1.2')
shutil.copyfile(location_of_install, new_location)
Run Code Online (Sandbox Code Playgroud) 我有以下代码行:
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
Run Code Online (Sandbox Code Playgroud)
我想在我的代码中动态升级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__
Run Code Online (Sandbox Code Playgroud)
所有代码都在 IPython(交互式)上进行了测试。如果我退出IPython并再次重新输入它就会生效。但这不是我想要的。
从输入1:
fruit, apple, cider
animal, beef, burger
Run Code Online (Sandbox Code Playgroud)
和输入2:
animal, beef, 5kg
fruit, apple, 2liter
fish, tuna, 1kg
Run Code Online (Sandbox Code Playgroud)
我需要生产:
fruit, apple, cider, 2liter
animal, beef, burger, 5kg
Run Code Online (Sandbox Code Playgroud)
我能得到的最接近的例子是:
object FileMerger {
def main(args : Array[String]) {
import scala.io._
val f1 = (Source fromFile "file1.csv" getLines) map (_.split(", *")(1))
val f2 = Source fromFile "file2.csv" getLines
val out = new java.io.FileWriter("output.csv")
f1 zip f2 foreach { x => out.write(x._1 + ", " + x._2 + "\n") }
out.close
}
}
Run Code Online (Sandbox Code Playgroud)
问题是该示例假定两个CSV文件包含相同数量的元素并且顺序相同.我的合并结果必须只包含第一个和第二个文件中的元素.我是Scala的新手,非常感谢任何帮助.