2013-02-22 31 views
173

ローカルファイルシステムからpipを使ってパッケージをインストールすることは可能ですか?pipでローカルファイルシステムフォルダからPythonパッケージをインストールする

python setup.py sdist私のパッケージには適切なtar.gzファイルが作成されています。このファイルは私のシステムの/srv/pkg/mypackage/mypackage-0.1.0.tar.gzに保存されています。

仮想環境では、パッケージをインストールするには、pypiまたは特定のローカルロケーション/srv/pkgからインストールしてください。

これは可能ですか?

PS pip install /srv/pkg/mypackage/mypackage-0.1.0.tar.gzと指定することができます。それはうまくいくでしょうが、私はpip install mypackageと入力すれば、/srv/pkgの場所をピップの別の場所として使うことを話しています。

+0

それでsetup.pyファイルを持っていることを

pip install -e <DIRECTORY> 

注意私がPython版の正しいバージョンをダウンロードして、 'pip install 'を実行した後。 –

+0

関連項目:[ローカルディレクトリからrequirement.txtに従ってパッケージをインストールするには?](http://stackoverflow.com/q/7225900/95735) –

答えて

74

あなたが探しているものは、--find-linksオプションです。

すべてのパッケージへのリンクを一覧表示するローカルパッケージインデックス用のダミーindex.htmlを生成する必要があるかもしれませんが。このツールは役立ちます:

https://github.com/wolever/pip2pi

+47

'pip install mypackage --no-index --find-links file:/// srv/pkg/mypackage'が動作するはずです。 – jfs

+0

それは動作します。理想的ではありませんが、かなり良いです。ありがとう。 – chadgh

+1

助けてください。また、pipの* -i *オプションを使用してローカルのPyPIとして扱うこともできます。 – diabloneo

290

何/ srvの/ PKGは 'setup.py' をすることができ、トップレベルのディレクトリである

pip install --help 
... 
    -e, --editable <path/url> Install a project in editable mode (i.e. setuptools 
           "develop mode") from a local project path or a VCS url. 

例えば、pip install -e /srv/pkg

::について見つかりました。

+28

これはパッケージを開発モードでインストールします。ソースはあります。万一、ソースが移動または削除された場合、パッケージのインポートは失敗します。 –

+2

@MarcoDinacci '--editable'の興味深い点は、ローカルのパッケージのディレクトリを調べて、もしあればソースをgit repoとして設定しているように思えるということです。私はこれについてのドキュメントを見つけることができません。 – Simon

+0

Windowsでもうまく機能します。受け入れられた答えでなければなりません。 – miguelr

17

これは私が使用して終了ソリューションです:

import pip 


def install(package): 
    # Debugging 
    # pip.main(["install", "--pre", "--upgrade", "--no-index", 
    #   "--find-links=.", package, "--log-file", "log.txt", "-vv"]) 
    pip.main(["install", "--upgrade", "--no-index", "--find-links=.", package]) 


if __name__ == "__main__": 
    install("mypackagename") 
    raw_input("Press Enter to Exit...\n") 

私はpip install examplesからだけでなく、another questionRikard's answerから一緒にこれをつなぎ。 "--pre"引数を使用すると、非本番バージョンをインストールできます。 "--no-index"引数は、PyPIインデックスの検索を避けます。 "--find-links =。"引数はローカルフォルダ内で検索されます(これは相対的または絶対的です)。デバッグには "--log-file"、 "log.txt"、 "-vv"引数を使用しました。 "--upgrade"引数を使用すると、古いバージョンより新しいバージョンをインストールできます。

また、アンインストールする方法もわかりました。これは、いくつかの異なるPython環境がある場合に便利です。それはちょうど意図しないアンインストールを防ぐために、安全対策で、代わりに「インストール」の「アンインストール」を使用して、同じ基本フォーマットです:

import pip 


def uninstall(package): 
    response = raw_input("Uninstall '%s'? [y/n]:\n" % package) 
    if "y" in response.lower(): 
     # Debugging 
     # pip.main(["uninstall", package, "-vv"]) 
     pip.main(["uninstall", package]) 
    pass 


if __name__ == "__main__": 
    uninstall("mypackagename") 
    raw_input("Press Enter to Exit...\n") 

ローカルフォルダは、これらのファイルが含まれていますinstall.py、uninstall.py、mypackagename- 1.0.zip

+1

ありがとうございます。 "--find-links =。"と "--no-index"は、私のユーティリティパッケージ内のpythonスクリプトを一緒に接着する際の鍵で、site-packagesから古いバージョンのパッケージを削除してから、サブディレクトリからtar.gzパッケージをインストールしますutility-package-folderの-find-links =。を知りませんでした。その後、ホイールを作成してインストールします。すべての自動化されたplumbumとクリックします。誰かがそれを望むなら、私はリンクを掲示するでしょう。 Upvoted。 – user3469861

15

私はpyfuzzyをインストールしています。これはPyPIではなく、「PyFuzzyで一致するディストリビューションが見つかりませんでした。しかし、私は受け入れられた答えを試します。

pip install --no-index --find-links=file:///Users/victor/Downloads/pyfuzzy-0.1.0 pyfuzzy 

それはうまく動作しません。結果は次のとおりです。pyfuzzy は(バージョンから:)要件pyfuzzyを満たすバージョンを見つけることができませんでした収集https://pypi.python.org/simple

無視インデックス 最後にpyfuzzy

が見つかりませマッチング分布しない、I単純な良い方法を見つける。 https://pip.pypa.io/en/latest/reference/pip_install.html

Install a particular source archive file. 
$ pip install ./downloads/SomePackage-1.0.4.tar.gz 
$ pip install http://my.package.repo/SomePackage-1.0.4.zip 

pip install ../pyfuzzy-0.1.0.tar.gz。今はうまくいく。希望はあなたを助けます。

1

オプション--find-linksは仕事をし、requirements.txtファイルから機能します!

あなたは、いくつかのフォルダにあるパッケージアーカイブを入れて、たとえばrequirementsのために、要件のファイルを変更することなく、最新のものを取ることができます:

. 
└───requirements.txt 
└───requirements 
    ├───foo_bar-0.1.5-py2.py3-none-any.whl 
    ├───foo_bar-0.1.6-py2.py3-none-any.whl 
    ├───wiz_bang-0.7-py2.py3-none-any.whl 
    ├───wiz_bang-0.8-py2.py3-none-any.whl 
    ├───base.txt 
    ├───local.txt 
    └───production.txt 

requirements/base.txtプットに:

--find-links=requirements 
foo_bar 
wiz_bang>=0.8 

にきちんとした方法をプロプライエタリパッケージを更新するだけで、新しいフォルダをフォルダにドロップすることができます

この方法で、パッケージをインストールすることができますlocal folderおよびpypiは、同じ単一コールで:pip install -r requirements/production.txt

PSです。要件を分割し、フォルダベースの要件組織を使用する方法については、私のcokiecutter-djangopackageフォークを参照してください。

25

これは非常に簡単です。あなたが必要とするコマンドは次のとおりです。ディレクトリ必見は私がWHLホイールから、setup.pyなしでは、PyPIパッケージをインストールするために探していた、そしてそれがインストールされてしまった

関連する問題