【问题标题】:How to use packages on the local filesystem?如何在本地文件系统上使用包?
【发布时间】: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

为了清楚起见,我将重申我的目标:我希望能够将仅存在于本地文件系统中的两个库与我正在处理的程序一起使用。我做错了什么,我应该如何设置这些库和程序以按我想要的方式工作?

【问题讨论】:

    标签: python pip setup.py


    【解决方案1】:

    packages 用于列出您正在创建的包中的包。 install_requires 用于列出您的软件包所依赖的软件包。您在packages 中添加了一个依赖项“axel”。没有名为“axel”的内部包,所以当然找不到具有该名称的目录。

    setup(
        ...,
        install_requires=['axel'],
        ...
    )
    

    【讨论】:

      猜你喜欢
      • 2019-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多