我怎样才能让setuptools安装不在PyPI上的软件包呢?

我刚开始使用setuptools和virtualenv。 我的软件包需要GitHub提供的最新的python-gearman。 PyPI上的python-gearman版本是旧的版本。 Github的源码是setuptools兼容的,即setup.py等。有没有办法让setuptools下载并安装新版本,而不是在PyPI上查找并安装旧版本?

仅供参考,新的python-gearman是http://github.com/mtai/python-gearman

关键是告诉easy_install包的下载位置。 在这个特殊情况下,可以在http://github.com/mtai/python-gearman/tarball/master处find它。; 但是,这个链接本身是行不通的,因为easy_install不能仅仅通过查看URL的内容就知道它将得到什么。

通过将其更改为http://github.com/mtai/python-gearman/tarball/master#egg=gearman-2.0.0beta,easy_install将能够识别软件包名称及其版本。;

最后一步是将URL添加到您的包的dependency_links,例如:

 setup( ... dependency_links = ['http://github.com/mtai/python-gearman/tarball/master#egg=gearman-2.0.0beta'] ) 

现在,当你的软件包被安装的时候,easy_install会发现有一个“gearman 2.0.0beta”可以从该URL下载,如果你指定了“gearman> = 2.0.0beta”在你的依赖

(通常,这样做的方式是在其PyPI页面上包含一个链接到可下载的源代码;在这种情况下,如果gearman包的作者已经包含类似上面的链接,那么您已经设置了通常,人们使用“myproject-dev”标记开发版本,然后人们使用“myproject> = somever,== dev”的要求,这样如果没有某个或更高版本的软件包,easy_install会尝试签出或下载版本。)

在使用pip时,你需要指定--process-dependency-links 。 请注意,依赖关系链接处理已被弃用,并将在未来版本中删除。

您可以使用pip install protocol+location[@tag][#egg=Dependency]格式,使用pip直接从源安装。

混帐

 pip install git+https://github.com/username/repo.git pip install git+https://github.com/username/repo.git@MyTag pip install git+https://github.com/username/repo.git@MyTag#egg=ProjectName 

水银

 pip install hg+https://hg.myproject.org/MyProject/ 

SVN

 pip install svn+svn://svn.myproject.org/svn/MyProject 

BZR

 pip install bzr+http://bzr.myproject.org/MyProject/trunk 

支持以下协议: [+git, +svn, +hg, +bzr]

版本

@tag让你指定一个特定的版本/标签签出。

#egg=name可以让你指定项目作为其他项目的依赖项。

订单必须始终是@tag#egg=name

私人存储库

您也可以通过将协议更改为SSH( ssh:// )并添加适当的用户( git@ )从私有存储库进行安装:

 git+ssh://git@github.com/username/my_private_repo 

您也可以使用用户名/密码从私人存储库进行安装。

 git+https://<username>:<password>@github.com/<user>/<repo>.git 

Github提供了创build可以循环的个人OAuth令牌的function

 git+https://<oauth token>:x-oauth-basic@github.com/<user>/<repo>.git 

requirements.txt

requirements.txt用于指定项目依赖关系:

requirements.txt

 package1 package2==1.0.2 package3>=0.0.4 git+https://github.com/username/repo.git 

这些不会自动与软件包一起安装,必须使用命令pip -r requirements.txt进行安装。

包括需求文件

需求文件可以包含其他需求文件:

要求-Docs.txt的

 sphinx -r requirements-dev.txt 

要求-dev.txt

 some-dev-tool -r requirements.txt 

requirements.txt

 package1 package2==1.0.2 package3>=0.0.4 git+https://github.com/username/repo.git 

setup.py

需求文件可以使用以下命令安装在setup.py指定的依赖项:

 -e . 

setup.py也可以使用与上面相同的语法从存储库安装,但使用本答案中提到的dependency_links值。

参考文献:

https://pip.pypa.io/en/latest/user_guide.html#installing-packages https://pip.pypa.io/en/latest/reference/pip_install.html

Vanilla setuptools不支持直接从git仓库下载,但是你可以使用该页面的下载源链接之一,例如:

 easy_install http://github.com/mtai/python-gearman/tarball/master