Python 如何在本地文件系统上使用包?
我有两个库,lib1和lib2以及一个使用它们的程序program1。 这些库具有如下所示的setup.py文件:Python 如何在本地文件系统上使用包?,python,pip,setup.py,Python,Pip,Setup.py,我有两个库,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=[
from distutils.core import setup
setup(name='lib1',
version='0.1.0',
maintainer='foven',
maintainer_email='foven@example.com',
url='example.com/lib1',
packages=[
]
)
-e ../lib1
-e ../lib2
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'
]
)
lib2的setup.py显然将lib1实例替换为lib2,但在其他方面是相同的
现在program1有一个requirements.txt文件,如下所示:
from distutils.core import setup
setup(name='lib1',
version='0.1.0',
maintainer='foven',
maintainer_email='foven@example.com',
url='example.com/lib1',
packages=[
]
)
-e ../lib1
-e ../lib2
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运行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=[
]
)
-e ../lib1
-e ../lib2
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
为了清楚起见,我将重申我的目标:我希望能够将仅存在于本地文件系统上的两个库与我正在开发的程序一起使用。我做错了什么?我应该如何设置这些库和程序以我想要的方式工作?用于列出您正在创建的包中的包。用于列出您的包所依赖的包。您将依赖项“axel”放在包中。没有名为“axel”的内部包,因此当然找不到具有该名称的目录
setup(
...,
install_requires=['axel'],
...
)