标签: devpi

使用setup.py和wheels安装软件包依赖项

我们正在使用一个内部托管的PyPI服务器(devpi-server),以便我们可以托管大型软件包的二进制轮子,这些软件包需要很长时间才能从scipy,matplotlib等源代码安装.安装这些软件包时,pip install scipy工作完美,绝对使用我们的轮子创造了.但是,使用任何内部开发的python包,这些包依赖于其中一个包并运行会python setup.py install|develop|test|whatever导致以下错误:

No local packages or download links found for scipy
Traceback (most recent call last):
  File "setup.py", line 136, in <module>
    'develop': DevelopCommand
  File "/usr/local/lib/python2.7/distutils/core.py", line 112, in setup
    _setup_distribution = dist = klass(attrs)
  File "/users/me/virtualenvs/devpi-test/lib/python2.7/site-packages/setuptools/dist.py", line 239, in __init__
    self.fetch_build_eggs(attrs.pop('setup_requires'))
  File "/users/me/virtualenvs/devpi-test/lib/python2.7/site-packages/setuptools/dist.py", line 263, in fetch_build_eggs
    parse_requirements(requires), installer=self.fetch_build_egg
  File "/users/me/virtualenvs/devpi-test/lib/python2.7/site-packages/pkg_resources.py", line 564, in resolve
    dist = best[req.key] = env.best_match(req, self, installer)
  File "/users/me/virtualenvs/devpi-test/lib/python2.7/site-packages/pkg_resources.py", line 802, in best_match
    return self.obtain(req, …
Run Code Online (Sandbox Code Playgroud)

python pypi devpi python-wheel

10
推荐指数
1
解决办法
2566
查看次数

如何在没有互联网访问和搜索功能的情况下制作本地 Pypi 镜像?

我正在尝试在我只能连接外部硬盘驱动器的服务器上使用 pip 搜索功能制作一个完整的本地 Pypi 存储库镜像。明确地说,我不想要一个简单的缓存系统,服务器连接到一个完全封闭的网络中的其他机器,根本无法访问互联网。

到目前为止,我所做的是使用 bandersnatch 转储每个 pypi 包,并且我可以在它前面使用一个简单的 http 服务器进行 pip 安装。我还检索了 pypi 遗留源代码,并让它在没有任何 python 包的情况下工作。我现在遇到的问题是将双方联系起来,我什至不确定是否可以这样做。

我还测试了pypiserver。它本可以做我想做的,但它太慢了,最终导致 pip search 抛出超时(看起来它不是为处理那么多包而构建的)。

最后,我看了一下devpi。似乎可以很好地完成我想做的工作,但我正在寻找一种方法来轻松地将我的 bandersnatch 转储导入其中。看起来我无法基于本地目录创建索引。

感谢您的任何回应。

python pip pypi devpi pypiserver

6
推荐指数
1
解决办法
4566
查看次数

如何强制 docker build 使用 devpi 服务器来执行 pip install 命令?

我正在尝试使用 docker build 为基于 Flask 的 Web 应用程序构建图像。我的 Dockerfile 如下所示:

FROM beehive-webstack:latest
MAINTAINER Anuvrat Parashar <anuvrat@zopper.com>

EXPOSE 5000
ADD . /srv/beehive/

RUN pip install -i http://localhost:4040/root/pypi/+simple/ -r /srv/beehive/requirements.txt
Run Code Online (Sandbox Code Playgroud)

不带 -i 标志的 pip install 可以工作,但它会从 pypi 下载所有内容,这自然很慢。

问题是 pip 无法访问我笔记本电脑上运行的 devpi 服务器。我怎样才能实现这一目标?

pip docker devpi

5
推荐指数
1
解决办法
2554
查看次数

devpi和pypi服务器之间的区别

在这里有一个简短的问题,习惯于devpi,并且想知道devpi和pypi服务器之间有什么区别?

比另一个更好?这一个量表哪个更好?

干杯

python pypi devpi python-packaging

5
推荐指数
1
解决办法
3181
查看次数

如何禁用将包上传到 PyPi 除非将 --public 传递给上传命令

我正在开发包并将包的开发/测试/等版本上传到本地 devpi 服务器。

为了防止意外上传到PyPi,我采用了以下常见做法:

setup(...,
      classifiers=[
        "Programming Language :: Python",
        "Programming Language :: Python :: 2",
        "Programming Language :: Python :: 2.7",
        "Private :: Do not Upload"
     ],
     ...)
Run Code Online (Sandbox Code Playgroud)

效果很好,但是当我最终准备好将包上传到 PyPi 时呢?

我想出了一个完全丑陋但简单的技巧,它要求我将分类器定义为 setup() 调用之外的全局变量,如下所示:

CLASSIFIERS = [
    "Programming Language :: Python",
    "Programming Language :: Python :: 2",
    "Programming Language :: Python :: 2.7"
]


if "--public" not in sys.argv:
     CLASSIFIERS.append("Private :: Do Not Upload")
else:
     sys.argv.remove("--public")

setup(...
      classifiers=CLASSIFIERS,
      ...)
Run Code Online (Sandbox Code Playgroud)

另一个也许更简单的选择是仅仅注释掉“私人::请勿上传”,但这似乎并不比我的黑客更专业。

我想做的创建一个名为的上传命令的适当子类SafeUpload,并让它检查--publiccmd-line 选项。也许,由于在上传之前可能存在构建,因此SafeBuild …

python setuptools pypi devpi

5
推荐指数
1
解决办法
2768
查看次数

通过Pipenv使用私有devpi服务器

我可以pip使用私有本地devpi服务器通过安装软件包。相应的配置为:

[global]
index_url = http://mydevpi.mine/root/pypi/+simple/

[search]
index = http://mydevpi.mine/root/pypi/

[install]
trusted-host = mydevpi.mine
Run Code Online (Sandbox Code Playgroud)

使用以下命令进行安装pip非常简单:

pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

但是,这样做pipenv似乎并不起作用。这有效,但未使用我的本地devpi

[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"
Run Code Online (Sandbox Code Playgroud)

这不起作用:

[[source]]

url = "http://devpi.dgv/root/pypi/+simple/"
verify_ssl = true
name = "pypi"
Run Code Online (Sandbox Code Playgroud)

我该如何告诉我pipenv使用其他网址pypi

python pip devpi pipenv

5
推荐指数
1
解决办法
1240
查看次数

devpi 索引中的 toxresult_upload 权限

我正在使用 Python devpi服务器,当我创建索引时,它添加了一个默认设置acl_toxresult_upload=:ANONYMOUS:,但我不知道它的含义。

当我在 Web 界面中查看索引时,它显示:

permissions

toxresult_upload
    Special: ANONYMOUS 

upload
    Users: my-user 
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索了它,但找不到它的含义的任何解释。我唯一能找到的是一个python 测试,它表明它与上传测试有关,但我不确定这对 Pypi 索引意味着什么。

    # anonymous may upload tests
    assert with_user(permissionrequest, None).has_permission(
        'toxresult_upload', StageACL(stage, False))
Run Code Online (Sandbox Code Playgroud)

python devpi

5
推荐指数
1
解决办法
395
查看次数

在Python wheel中包含requirements.txt文件

为了避免在两个地方指定依赖项,我有一个Python项目,其setup.py解析一个requirements.txt文件以生成install_requires包列表.这很好用,直到我尝试将一个轮子上传到一个devpi服务器然后安装它 - 我得到的错误是找不到requirements.txt.

是否可以使用setup.py旁边的requirements.txt文件构建分发?我已经尝试过package_data和data_files,但生成的发行版仍然没有包含这些文件.

python pip setuptools devpi python-wheel

4
推荐指数
1
解决办法
1939
查看次数

我可以在 Linux 上将二进制轮上传到本地 devpi 吗?

是否可以使用“pip wheel”将 Linux 上的二进制轮上传到本地 devpi 服务器?或者我是否需要访问 setup.py 并从那里上传?在不需要 setup.py 的情况下构建轮子(它在幕后处理),只需要一个 setup.py 来上传结果,这似乎是一种耻辱。

这让我想知道:C 扩展 PyPI 目前只允许为 Windows 和 Mac OS X 上传特定于平台的轮子。为这些平台创建轮子仍然很有用,因为它避免了用户在安装时编译包的需要。

我正在做“pip -v -v -v wheel numpy”(例如),我有一个 pip.conf 和 .pypirc (都指向我们本地的 devpi)。

谢谢!

python devpi python-wheel

3
推荐指数
1
解决办法
2473
查看次数