web-dev-qa-db-ja.com

pipインストール依存関係リンク

python version 2.7pip version is 1.5.6を使用しています。

Setup.pyのgitリポジトリがインストールされているように、URLから追加のライブラリをインストールしたいと思います。

install_requiressetup.pyパラメーターにエキストラを入れていました。つまり、私のライブラリには追加のライブラリが必要であり、それらもインストールする必要があります。

...
install_requires=[
    "Django",
    ....
],
...

ただし、gitreposなどのURLはinstall_requiressetup.pyの有効な文字列ではありません。 githubからライブラリをインストールしたいとします。その問題について検索したところ、dependency_linkssetup.pyにライブラリを配置できるものが見つかりました。しかし、それでも機能しません。これが私の依存関係リンクの定義です。

dependency_links=[
    "https://github.com/.../tarball/master/#Egg=1.0.0",
    "https://github.com/.../tarball/master#Egg=0.9.3",
], 

リンクは有効です。これらのURLを使用してインターネットブラウザからダウンロードできます。これらの追加のライブラリは、私の設定ではまだインストールされていません。また、--process-dependency-linksパラメーターを試してpipを強制しました。しかし、結果は同じです。ピッピング時にエラーは発生しません。

インストール後、pip freezeにライブラリが表示されません。結果はdependency_linksになります。

setup.pyインストールでダウンロードできるようにするにはどうすればよいですか?

編集:

これが私の完全なsetup.pyです

from setuptools import setup

try:
    long_description = open('README.md').read()
except IOError:
    long_description = ''

setup(
    name='esef-sso',
    version='1.0.0.0',
    description='',
    url='https://github.com/egemsoft/esef-sso.git',
    keywords=["Django", "egemsoft", "sso", "esefsso"],
    install_requires=[
        "Django",
        "webservices",
        "requests",
        "esef-auth==1.0.0.0",
        "Django-simple-sso==0.9.3"
    ],
    dependency_links=[
        "https://github.com/egemsoft/esef-auth/tarball/master/#Egg=1.0.0.0",
        "https://github.com/egemsoft/Django-simple-sso/tarball/master#Egg=0.9.3",
    ],

    packages=[
        'esef_sso_client',
        'esef_sso_client.models',
        'esef_sso_server',
        'esef_sso_server.models',
    ],
    include_package_data=True,
    Zip_safe=False,
    platforms=['any'],
)

編集2:

これがpipログです。

Downloading/unpacking esef-auth==1.0.0.0 (from esef-sso==1.0.0.0)
  Getting page https://pypi.python.org/simple/esef-auth/
  Could not fetch URL https://pypi.python.org/simple/esef-auth/: 404 Client Error: Not Found
  Will skip URL https://pypi.python.org/simple/esef-auth/ when looking for download links for esef-auth==1.0.0.0 (from esef-sso==1.0.0.0)
  Getting page https://pypi.python.org/simple/
  URLs to search for versions for esef-auth==1.0.0.0 (from esef-sso==1.0.0.0):
  * https://pypi.python.org/simple/esef-auth/1.0.0.0
  * https://pypi.python.org/simple/esef-auth/
  Getting page https://pypi.python.org/simple/esef-auth/1.0.0.0
  Could not fetch URL https://pypi.python.org/simple/esef-auth/1.0.0.0: 404 Client Error: Not Found
  Will skip URL https://pypi.python.org/simple/esef-auth/1.0.0.0 when looking for download links for esef-auth==1.0.0.0 (from esef-sso==1.0.0.0)
  Getting page https://pypi.python.org/simple/esef-auth/
  Could not fetch URL https://pypi.python.org/simple/esef-auth/: 404 Client Error: Not Found
  Will skip URL https://pypi.python.org/simple/esef-auth/ when looking for download links for esef-auth==1.0.0.0 (from esef-sso==1.0.0.0)
  Could not find any downloads that satisfy the requirement esef-auth==1.0.0.0 (from esef-sso==1.0.0.0)
Cleaning up...
  Removing temporary dir /Users/ahmetdal/.virtualenvs/esef-sso-example/build...
No distributions at all found for esef-auth==1.0.0.0 (from esef-sso==1.0.0.0)
Exception information:
Traceback (most recent call last):
  File "/Users/ahmetdal/.virtualenvs/esef-sso-example/lib/python2.7/site-packages/pip/basecommand.py", line 122, in main
    status = self.run(options, args)
  File "/Users/ahmetdal/.virtualenvs/esef-sso-example/lib/python2.7/site-packages/pip/commands/install.py", line 278, in run
    requirement_set.prepare_files(Finder, force_root_Egg_info=self.bundle, bundle=self.bundle)
  File "/Users/ahmetdal/.virtualenvs/esef-sso-example/lib/python2.7/site-packages/pip/req.py", line 1177, in prepare_files
    url = Finder.find_requirement(req_to_install, upgrade=self.upgrade)
  File "/Users/ahmetdal/.virtualenvs/esef-sso-example/lib/python2.7/site-packages/pip/index.py", line 277, in find_requirement
    raise DistributionNotFound('No distributions at all found for %s' % req)
DistributionNotFound: No distributions at all found for esef-auth==1.0.0.0 (from esef-sso==1.0.0.0)

dependency_linksのソースを使用していないようです。

12
Ahmet DAL

install_requiresにも依存関係が含まれていることを確認する必要があります。

これが例ですsetup.py

#!/usr/bin/env python
from setuptools import setup

setup(
    name='foo',
    version='0.0.1',
    install_requires=[
        'balog==0.0.7'
    ],
    dependency_links=[
        'https://github.com/balanced/balog/tarball/master#Egg=balog-0.0.7'
    ]
)

setup.pyの問題は次のとおりです。

設定した依存関係リンクにEgg名がありません。

あなたが持っている

https://github.com/egemsoft/esef-auth/tarball/master/#Egg=1.0.0.0

あなたが必要

https://github.com/egemsoft/esef-auth/tarball/master/#Egg=esef-auth-1.0.0.0

8
mjallday

Pipは、しばらく前にdependency_linksのサポートを削除しました。 dependency_linksをサポートするpipの最新バージョンは1.3.1です 、それをインストールするには

pip install pip==1.3.1

依存関係リンクはその時点で機能するはずです。依存関係は常にpipの最後の手段であることに注意してください。同じ名前のパッケージがpypiに存在する場合、それはあなたのものよりも選択されます。

https://github.com/pypa/pip/pull/1955 dependency_linksの許可を開始しているようですが、pipはそれを保持していますが、新しいバージョンのピップ。

[〜#〜] edit [〜#〜]:pip 7の時点で、彼らはdepリンクを再考し、有効にしていますが、非推奨の通知を削除しませんでした。議論から、彼らはここにとどまっているようです。 pip> = 7の場合、インストール方法は次のとおりです。

pip install -e . --process-dependency-links --allow-all-external

または、以下をpip.confに追加します。例: /etc/pip.conf

[install]
process-dependency-links = yes
allow-all-external = yes
trusted-Host =
    bitbucket.org
    github.com

[〜#〜]編集[〜#〜]

私が学んだ秘訣は、バージョン番号を非常に高いものに上げて、pipが非依存リンクバージョンを優先しないようにすることです(それが必要な場合)。上記の例から、依存関係リンクを次のようにします。

"https://github.com/egemsoft/Django-simple-sso/tarball/master#Egg=999.0.0",

また、バージョンが例のように見えるか、日付バージョンであることを確認してください。他のバージョン管理では、pipは開発バージョンであると見なし、インストールしません。

18
Pykler

--process-dependency-linksを有効にするためのdependency_linksオプションは Pip 19.0で削除されました でした。

代わりに、 PEP 508 URLを使用して依存関係を指定できます。これは Pip 18.1以降でサポートされています です。 setup.pyからの抜粋の例を次に示します。

install_requires=[
    "numpy",
    "package1 @ git+https://github.com/user1/package1",
    "package2 @ git+https://github.com/user2/package2@branch1",
],

Pipは、PyPIからのこのような依存関係を持つパッケージのインストールをサポートしていないことに注意してください PyPIにアップロードすることはできなくなります(Pip 18.1のニュースエントリを参照)

10
Mihai Capotă

パッケージの依存関係の1つとして形を整えて使用したいという同様の状況に直面しました。ただし、Shapelyには、Windowsを使用している場合は、 http://www.lfd.uci.edu/~gohlke/pythonlibs/ の.whlファイルを使用する必要があるという警告があります。それ以外の場合は、Cコンパイラをインストールする必要があります。これは私が望まないことです。他の多くのものをインストールする代わりに、ユーザーに単にpip install mypackageを使用してもらいたいです。

そして、あなたがdependency_linksで典型的なセットアップをしているなら

setup(
  name = 'streettraffic',
  packages = find_packages(), # this must be the same as the name above
  version = '0.1',
  description = 'A random test lib',
  author = 'Costa Huang',
  author_email = '[email protected]',
  install_requires=['Shapely==1.5.17'],
  dependency_links = ['http://www.lfd.uci.edu/~gohlke/pythonlibs/ru4fxw3r/Shapely-1.5.17-cp36-cp36m-win_AMD64.whl']
)

pip install .を実行すると、Pypiで適切に選択され、Windowsのインストールで問題が発生します。何時間も調査した後、私はこのリンクを見つけました setuptoolsにdependency_linksを使用してmysqlclientをインストールするように強制します そして基本的にfrom setuptools.command.install import install as _installを使用して手動で形を整えてインストールします。

from setuptools.command.install import install as _install
from setuptools import setup, find_packages
import pip

class install(_install):
  def run(self):
    _install.do_Egg_install(self)

    # just go ahead and do it
    pip.main(['install', 'http://localhost:81/Shapely-1.5.17-cp36-cp36m-win_AMD64.whl'])

setup(
  name = 'mypackage',
  packages = find_packages(), # this must be the same as the name above
  version = '0.1',
  description = 'A random test lib',
  author = 'Costa Huang',
  author_email = '[email protected]',
  cmdclass={'install': install}
)

そして、スクリプトはうまく機能します。それが役に立てば幸い。

3
Costa Huang