開発モードでインストールされたPythonモジュールの削除


90

こんにちは、私はsetuptoolsを使用してpythonパッケージを試していました。テストするために、開発モードでモジュールをインストールしました。すなわち

python setup.py develop

これにより、sys.pathに私のモジュールディレクトリが追加されました。モジュールを削除したいのですが、これを行う方法はありますか?

前もって感謝します


4
pipPythonパッケージを管理するためのアンインストール機能を備えた、またはその他のマネージャーの使用を開始します。
Tomasz Wysocki 2010

1
@Tomasz python setup.py developwithと同等のことをどのように行うのですpipか?
akaihola

7
pip install -e。
Tomasz Wysocki

11
「pip」はこの質問に対する正しい答えではありません。実行または使用するために 'pip'を使用して開発中のプロジェクトをインストールすると、ソースコードを変更するたびに再インストールする必要があります。正しい方法は、元の質問にあるように、「setup.pydevelop」を使用することです。
ジョナサンハートレー

6
@JonathanHartleyそれは単なる偽りです。pipには--editable(または-e)引数があり、これはsetuptools 'とほぼ同等にdevelop動作します。私はおそらく--editableあなたのコメントよりも新しいと思いましたが、いいえ-GitHubのpipリポジトリをすばやく検索すると、2009年のコミットで編集可能ファイルへの参照が表示されます。 !
Mark Amery 2018年

回答:


223

--uninstallまたは-uオプションを使用してdevelop、すなわち:

python setup.py develop --uninstall

これにより、easy-install.pthから削除され、.egg-linkが削除されます。それがしない唯一のことは(まだ)スクリプトを削除することです。


3
開発バージョンにいくつかの実行可能ファイルがインストールされていてsetup.py、それらをで変更した場合は、手動で削除する必要があります。
norok2

1
説明どおりに実行しますが、出力にエラーはありませんが、開発パッケージをグローバルにインポートできますが、削除されていないようです。編集:私は知っている、なぜ、私はそれを実行しなければならなかった--user私は、インストール時に行ったようにオプション:python setup.py develop --uninstall --user
マレク

(たとえば)モジュールの名前を変更すると状況が変わる可能性があるため、これは安全ではないと思います。すべてを手動で削除する必要があります。
mathtick

@ norok2これらの実行可能ファイルを削除するために手動で実行する必要があるコマンドは何ですか。私が知る限り、上記はpython / pipの特定のバージョンで機能しますが、どれが正しいかはわかりません。
チャーリーパーカー

1
@CharlieParker rmまたはdelOSによって異なります。私が意味することは、あなたがインストール時にいくつかの実行可能ファイルを持っていたし、その後自分の名前を変更(または削除)、あなたの中にあればということでsetup.py、その後、setup.py(なしあなたの問題ではもはやそれらについて知ることができませんpip/のpythonバージョンを、あなたがそれらの世話をする必要がありますこれらは通常bin、POSIX(Linux、BSD、MacOS Xを読み取る)システムのいくつかのディレクトリにあり、Winを思い出せません
norok2

16

site-packagesディレクトリのeasy-install.pthを編集し、そのパッケージの開発バージョンを指す行を削除します。


ええ、私はこれを正確に行い、package-egg-linkという名前のファイルがもう1つありましたが、これを削除して、モジュールへの参照を削除しました。おかげで:)
copyninja

10
"setup.py develop --uninstall"がこれを行います。@ pjebyの回答を参照してください
Jonathan Hartley

3
develop --uninstallプロジェクトが2つに分割されていて、間違ったプロジェクトが元のディレクトリに残っているため、失敗したときにこれはうまくいきました。
Wesley Baugh、2013年

1

私はこれと同じような問題を以前に経験しました。私がしたことは、Pythonシェルをロードし、モジュールをインポートして、その__file__属性を出力することでした。そこから、関連付けられていたフォルダまたはファイルを削除します。

調べたいのは、virtualenvを使用していることです。このシステムを使用すると、システムとは別にPythonのインスタンスを作成できます。このインスタンスでインストールまたは使用するモジュールは、モジュールのバージョンを含めて自己完結型です。

私はすべてのプロジェクトを、含まれている独自のvirtualenv内に保持します。これにより、他のプロジェクトからのモジュールを台無しにすることを心配することなく、任意のモジュールをインストールして使用できます。


次回はパッケージで遊ぶときからこれを使用するので、システムのPythonを台無しにすることはありません。情報をありがとう
copyninja
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.