私は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がインストールされています。誰かがそれを解決する方法を私に指摘することができるなら、あなたを助けることを認めます。
安価なトリックは、virtualenv pythonを使用して(グローバル)pylintを実行することです。 pylint
の代わりにpython $(which pylint)
を使用してこれを行うことができます。 zshでは、python =pylint
。
仮想環境に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
その後、事前にダウンロードされたバージョンを使用します。
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によって配布されたバージョンを使用しなくなりました。
私もこの問題に遭遇しました。私の解決策は、pylintプログラムのShebangを編集することでした(ただし、pylintへのパスは私のパスとは異なる場合があります)。
$ Sudo vim /usr/bin/pylint
交換:
#!/usr/bin/python
と:
#!/usr/bin/env python
チャットで問題が解決されました(コメントのリンク)。
グローバル環境にpylintをインストールしたため、Sudo yum install pylint
の使用に問題がありました。解決策は次のコマンドを使用することでした:
pip install -i http://f.pypi.python.org/simple pylint
-i
の使用法に注意してください。これは、通常のインデックスが質問者にとって壊れているように見えたためです。
この質問に回答してからしばらく経っていますが、誰かが同じ問題に遭遇した場合に備えて、この投稿はここに残しておくべきだと思いました。
何らかの理由で、仮想環境ではなくグローバルスペースにpylint
を保持する必要がある場合は、ここの推奨事項 PyLint + VirtualEnv を使用できます。
基本的には、pylint
をinit-hook
を使用して構成し、Pythonプログラムをグローバルpylint
を使用して残りをロードするプログラムをエンコードする環境の。
ターゲットpythonインタプリタを呼び出すことでそこに着くことができます:
./env/bin/python -m pylint ...
# or in an already active env
python -m pylint ...
私はSyntastic + Pylintの組み合わせを使用しており、いつでも作業できるさまざまなvirtualenvがあるので、virtualenvコマンドのラッパーを作成しました。 、すべての要件の後にpylintをインストールします。
そうすれば、virtualenvをアクティブ化するたびに、独自のPylintバージョンを取得できます。
これが役に立てば幸いです、そして@ briford-wylieからグローバルなものを削除するためのヒントに感謝します
今日も同じ問題に遭遇しました。 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