我有两个库,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
为了清楚起见,我将重申我的目标:我希望能够使用仅存在于我正在处理的程序的本地filesytem上的两个库。我做错了什么,我应该如何设置这些库和程序以我想要的方式工作?
答案 0 :(得分:1)
packages
用于列出您正在创建的软件包中的软件包。 install_requires
用于列出您的软件包所依赖的软件包。你在packages
中添加了一个依赖项' axel'。没有名为' axel'的内部包,所以当然找不到具有该名称的目录。
setup(
...,
install_requires=['axel'],
...
)