当前位置: 首页 > 知识库问答 >
问题:

VCS服务器上托管的pip+要求和包

丌官哲彦
2023-03-14

大家好,

假设我有两个python包(packageApackageB),它们位于一个私有服务器上的两个git存储库中;包B依赖于包e,因此包B中的setup.py包含:

install_requires=[packageA@git+ssh://my.git.server/packageA@master]

然后是PackageC,它同时使用PackageAPackageBPackageC不是一个可安装的库,而是一个脚本集合,因此我有一个Requirements.txt,它包含(以及其他pypi依赖项):

git+ssh://my.git.server/packageA.git#egg=packageA
git+ssh://my.git.server/packageB.git#egg=packageB

如果我现在尝试通过pip install-r requirements.txt安装所有要求,则会出现以下错误:

ERROR: Cannot install -r requirements.txt (line 5) and packageA 0.1.0 (from git+ssh://****@my.git.server/packageA.git#egg=packageA) because these package versions have conflicting dependencies.
The conflict is caused by:
    the user requested packageA 0.1.0 (from git+ssh://****@my.git.server/packageA.git#egg=packageA)
    packageB depends on packageA 0.1.0 (from git+ssh://****@my.git.server/packageA@master)

(注意:这不是错别字,请求的两个版本确实是相同的。0.1.0是两个包的最新版本,它是使用version关键字设置为setuptools.setup)。

在我升级到pip版本20.3.1之后,这种情况就开始发生了。

检查完整的输出日志,我认为问题是由于在新的pip版本中,PackageA被下载了两次,首先是为了安装它,然后是作为packageB的一个依赖项,到最后,pip不明白这是同一个包,也不知道该选择哪个。

我知道,从技术上讲,在这种情况下,一个简单的解决方案是从requirements.txt中删除packageA,但是在我有几十个包的情况下,这个解决方案是不可行的。

怎么了?我做错了什么?我该如何解决这个问题?

共有1个答案

令狐晟
2023-03-14

这可能是最好的办法

git+git:/github.com/path/to/package-two@master#egg=package-two

 类似资料:
  • 问题内容: 这是一个简单的node.js代码。 我将其上传到cpanel托管服务器上并安装了node.js并运行它。如果服务器是普通服务器,我可以通过访问’http:// {serverip}:8080’检查脚本结果。但是在cpanel上托管域和子域,并且每个域都由每个站点匹配。甚至http:// {serverip}也不是有效的网址。如何访问我的node.js结果?请教我。谢谢。bingbing

  • PHP 版本 5.1.6 或更新的版本。 大多数 Web 应用程序需要数据库。当前支持的数据库接口为:MySQL (4.1+), MySQLi(推荐), MS SQL, Postgres, Oracle, SQLite 和 ODBC。

  • 推荐使用 PHP 5.6 或更新版本。 虽然 CodeIgniter 也可以在 PHP 5.3.7 上运行,但是出于潜在的安全和性能问题, 我们强烈建议你不要使用这么老版本的 PHP,而且老版本的 PHP 也会缺少很多特性。 大多数的 Web 应用程序应该都需要一个数据库。当前 CodeIgniter 支持下列数据库: MySQL (5.1+),驱动有:mysql (已废弃),mysqli 和 p

  • 我需要一些上传图像的帮助。 我有两个不同的申请 在我的专用服务器上运行的Springstart应用程序 Angulal-6 Application-在我的云服务器上运行 我需要从我的spring boot应用程序上传一个图像到Angular-6资产文件夹(资产文件夹类似于spring boot应用程序的资源文件夹) 在application.properties我已经声明上传位置,如profile

  • 为什么我不能多次打这个电话? 在下面第二次使用时崩溃....和不回收有关吗?

  • 如果不想设立自己的 Git 服务器,你可以选择将你的 Git 项目托管到一个外部专业的托管网站。 这带来了一些好处:一个托管网站可以用来快速建立并开始项目,且无需进行服务器维护和监控工作。 即使你在内部设立并且运行了自己的服务器,你仍然可以把你的开源代码托管在公共托管网站——这通常更有助于开源社区来发现和帮助你。 现在,有非常多的托管供你选择,每个选择都有不同的优缺点。 欲查看最新列表,请浏览 G

  • 当你想要分享你代码给其他人,或者是你需要在另外一台电脑上工作时,托管代码就会是一个非常重要的话题。基本上代码托管有两种不同的形式: do-it-yourself(建立一个自己的)或者 leave-me-in-peace(使用第三方提供的平台,不麻烦自己)。 (A) Do-It-Yourself 把你的 Git 仓库托管在你自己的服务器上会有很多的优点: 可以节省你花在代码托管服务上的费用。 你的代

  • 我按照此页面在我的服务器(ngrok 1.7)上自托管ngrok https://www.svenbit.com/2014/09/run-ngrok-on-your-own-server/ ATM,我可以正常使用超文本传输协议。 但是,我也想使用ssh(tcp协议)。 当尝试使用以下命令 ngrok (Ctrl C退出) 隧道在线状态 版本1.7/1.7 转发tcp://tunnel.mydoma