2017-12-13 6 views
1

pipが必要なパッケージをアンインストールするだけです!パッケージがパッケージの特定のバージョンを明示的に宣言している場合、pipはそのパッケージをアンインストールできないはずですが、そうではありません。考えてみましょう:ピップが必要なパッケージをアンインストールするのはなぜですか?

$ pip list | grep bar 
bar   1.0  
$ cat setup.py 

from setuptools import setup, find_packages 

def do_setup(): 
    setup(
     name='foo', 
     description='the foo package', 
     license='MIT', 
     version='1.0', 
     install_requires=[ 
      'bar==1.0', 
     ], 
    ) 

if __name__ == "__main__": 
    do_setup() 
$ pip install . 
Processing /Users/williamp/examples/pip/foo 
    Requirement already satisfied (use --upgrade to upgrade): foo==1.0 from file:///Users/williamp/examples/pip/foo in /Users/williamp/tmp/virt/lib/python2.7/site-packages 
Requirement already satisfied: bar==1.0 in /Users/williamp/tmp/virt/lib/python2.7/site-packages (from foo==1.0) 
$ cd ../bar 
$ pip install dist/bar-1.1.tar.gz 
Processing ./dist/bar-1.1.tar.gz 
Building wheels for collected packages: bar 
    Running setup.py bdist_wheel for bar ... done 
    Stored in directory: /Users/williamp/Library/Caches/pip/wheels/bf/d3/68/6016190bb2084f62ba1107c63bea948f4cfbb2c129fa0cb102 
Successfully built bar 
Installing collected packages: bar 
    Found existing installation: bar 1.0 
    Uninstalling bar-1.0: 
     Successfully uninstalled bar-1.0 
Successfully installed bar-1.1 

私がパッケージfooをバー== 1.0の明示的な依存関係でインストールされている状況で巻き上げているようですが、ピップはバー1.0をアンインストールし、システムが不安定な状態になりました。いくつかのシンプルな設定オプションは私がこれをしないように伝えるpipに渡すことができますか?

答えて

0

Pipには、依存関係のないライブラリをインストールするフラグがあります。試してみてください...

pip install --no-dependencies dist/bar-1.1.tar.gz 
+0

私は依存関係のないパッケージをインストールしたくありません!私はpipに依存してすべての依存関係が確実にインストールされるようにしたい。 –

+0

あなたが探しているものを達成するためのきれいな方法はないようですが。これは、pipがパッケージと同じ名前の依存関係をインストールしようとしているという事実に関連しているようです。 https://github.com/pypa/pip/issues/304。彼らはあなたがピップチェックを実行する必要がまだインストールされていることを確認するように見えます。 –

1

ありませんが、あなたは手動でpip checkを実行して、これをチェックすることができます

$ pip check 
No broken requirements found. 
$ pip uninstall pytz 
Uninstalling pytz-2017.3: 
    ... 
Proceed (y/n)? y 
    Successfully uninstalled pytz-2017.3 
$ pip check 
Django 2.0 requires pytz, which is not installed. 

依存関係の追跡は、今しばらくの間、ピップとa major issueをされています。それは最終的に固定される、私は願っています。

関連する問題