【发布时间】:2016-04-06 18:20:20
【问题描述】:
我有两个库 lib1 和 lib2 以及一个使用它们的程序 program1。 这些库的 setup.py 文件如下所示:
from distutils.core import setup
setup(name='lib1',
version='0.1.0',
maintainer='foven',
maintainer_email='foven@example.com',
url='example.com/lib1',
packages=[
]
)
lib2 的 setup.py 显然用 lib2 替换了 lib1 实例,但其他方面是相同的。
现在 program1 有一个 requirements.txt 文件,如下所示:
-e ../lib1
-e ../lib2
我想从它们在文件系统上的位置使用这两个库,因为我还没有准备好将它们放入存储库。为 program1 运行 pip install -r requirements.txt 时,这似乎有效。
但是,如果我将 lib1/setup.py 文件更改为如下所示:
from distutils.core import setup
setup(name='lib1',
version='0.1.0',
maintainer='foven',
maintainer_email='foven@example.com',
url='example.com/lib1',
packages=[
'axel'
]
)
并将 program1/requirements.txt 更改为:
axel == 0.0.4
-e ../lib1
-e ../lib2
从 program1 运行 pip install -r requirements.txt 会导致错误:
error: package directory 'axel' does not exist
然而,pip list 和 pip freeze 都表明该包已安装。
对我来说,似乎 pip 并没有在正常位置或 pypi 中寻找已安装包的 axel,但我对此没有太多经验,所以我可能完全错了。如果我创建一个空目录 lib1/axel 并为 program1 运行 pip install -r requirements.txt,它似乎可以工作:
Obtaining file:///C:/Users/foven/code/lib1 (from -r requirements.txt (line 2))
Obtaining file:///C:/Users/foven/code/lib2 (from -r requirements.txt (line 3))
Requirement already satisfied (use --upgrade to upgrade): axel==0.0.4 in c:\program files\python35\lib\site-packages (from -r requirements.txt (line 1))
Installing collected packages: lib1, lib2
Running setup.py develop for lib1
Running setup.py develop for lib2
Successfully installed lib1-0.1.0 lib2-0.1.0
为了清楚起见,我将重申我的目标:我希望能够将仅存在于本地文件系统中的两个库与我正在处理的程序一起使用。我做错了什么,我应该如何设置这些库和程序以按我想要的方式工作?
【问题讨论】: