web-dev-qa-db-ja.com

pylintがvirtualenvを指していませんpython

私はpythonにかなり慣れていません。現在、コードの品質をチェックするためにpylintを使用しようとしています。問題が発生しています。私のpylintはvirtualenv pythonインタープリターをポイントしていません。これは、pylint --versionを実行したときに得られる出力です

 $ pylint --version
   pylint 0.21.1,
   astng 0.20.1, common 0.50.3
   Python 2.6.6 (r266:84292, Jul 10 2013, 22:48:45)
   [GCC 4.4.7 20120313 (Red Hat 4.4.7-3)]

Virtualenvにはpython 2.7がインストールされています。誰かがそれを解決する方法を私に指摘することができるなら、あなたを助けることを認めます。

21
hjelpmig

安価なトリックは、virtualenv pythonを使用して(グローバル)pylintを実行することです。 pylintの代わりにpython $(which pylint)を使用してこれを行うことができます。 zshでは、python =pylint

43
Noufal Ibrahim

仮想環境にpylintをインストールしてから、そのインスタンスを実行する必要があると私はかなり確信しています。

更新-人生を楽にする:

仮想環境で多くの人が作業するバッチファイル(既知の場所またはパス上)、またはgetlint.batのような次のようなものを含むbashスクリプトを作成することをお勧めします。

pip install pylint

これを呼び出す仮想環境をアクティブ化すると、pylintがその仮想環境にインストールされます。オフラインになる可能性が高いか、インターネット接続が不十分である可能性がある場合は、1回良好なインターネット接続があるとき、(おそらく=ごとに1回) python 2&3):

mkdir C:\Some\Directory\You\Will\Leave\Alone
pip download --dest=C:\Some\Directory\You\Will\Leave\Alone pylint

これは、pylintとその依存関係をC:\Some\Directory\You\Will\Leave\Aloneにダウンロードし、getlint.batを変更して以下を読み取ることができます。

pip install pylint --find-links=C:\Some\Directory\You\Will\Leave\Alone

その後、事前にダウンロードされたバージョンを使用します。

21
Steve Barnes

Noufal Ibrahimの答え は、pylintを手動で実行すると機能します。

エディター/ IDEからpylintを実行する場合は、プラグインを正しく構成する必要があります。

トリッキーになる可能性があります。これは各IDE /プラグインのバグと考えられるかもしれませんが、それはそうです。

別の答え で提案されているように/usr/bin/pylintを変更して#!/usr/bin/env pythonを書き込むと、pylintのすべての使用(手動使用、またはエディター統合)でこれが修正されます。

ただし、少なくともDebianでは、#!/usr/bin/pythonの使用は 設計上の選択 であり、バグではありません。根拠については here を参照してください。

そのシステムファイルの変更を回避するには、/usr/bin/pylint/usr/local/binのコピーを作成します。

cp /usr/bin/pylint /usr/local/bin/pylint
vi usr/local/bin/pylint # Edit the file to use /usr/bin/env python

これはpylintの更新によって破られることはありませんが、それでもDebianの「強く推奨される選択」を侵害します。

この方法にはroot権限が必要です。権限のないユーザーがエイリアスを作成する可能性があります

alias pylint='/usr/bin/env python $(which pylint)'.

私は常にvirtualenvで開発しており、virtualenvの作成時にpylintとflake8を自動的にインストールするようにpostmkvirtualenvフックを設定しているため、debianによって配布されたバージョンを使用しなくなりました。

7
Jérôme

私もこの問題に遭遇しました。私の解決策は、pylintプログラムのShebangを編集することでした(ただし、pylintへのパスは私のパスとは異なる場合があります)。

$ Sudo vim /usr/bin/pylint

交換:

#!/usr/bin/python

と:

#!/usr/bin/env python
5
starlocke

チャットで問題が解決されました(コメントのリンク)。

グローバル環境にpylintをインストールしたため、Sudo yum install pylintの使用に問題がありました。解決策は次のコマンドを使用することでした:

pip install -i http://f.pypi.python.org/simple pylint

-iの使用法に注意してください。これは、通常のインデックスが質問者にとって壊れているように見えたためです。

5
Maciej Gol

この質問に回答してからしばらく経っていますが、誰かが同じ問題に遭遇した場合に備えて、この投稿はここに残しておくべきだと思いました。

何らかの理由で、仮想環境ではなくグローバルスペースにpylintを保持する必要がある場合は、ここの推奨事項 PyLint + VirtualEnv を使用できます。

基本的には、pylintinit-hookを使用して構成し、Pythonプログラムをグローバルpylintを使用して残りをロードするプログラムをエンコードする環境の。

2
Omar Trejo

ターゲットpythonインタプリタを呼び出すことでそこに着くことができます:

./env/bin/python -m pylint ...

# or in an already active env
python -m pylint ...
1
ThorSummoner

私はSyntastic + Pylintの組み合わせを使用しており、いつでも作業できるさまざまなvirtualenvがあるので、virtualenvコマンドのラッパーを作成しました。 、すべての要件の後にpylintをインストールします。

そうすれば、virtualenvをアクティブ化するたびに、独自のPylintバージョンを取得できます。

これが役に立てば幸いです、そして@ briford-wylieからグローバルなものを削除するためのヒントに感謝します

0
mrArias

今日も同じ問題に遭遇しました。 ThorSummoner の回答を続けて、PylintをPipenvなどの仮想環境内でpylint-Djangoと一緒に使用する場合は、ターゲットpython interpreter( python -m pylint

ローカルでもCIでも機能する優れたアプローチは、Pipfileのスクリプトセクションでlintコマンドを書き留めることです。

[scripts]
lint = "python -m pylint [--options] all-my-modules-names..."

次に、pylintの呼び出しは次のように簡単です。

pipenv run lint
0
UncleSaam