私は最近pythonを学んでいます。そして、MacBookで実行しているエディターとしてPyCharmを使用しています。問題は、PyCharmターミナルでscrapy -Vのようなものを入力すると、「zsh :コマンドが見つかりません:scrapy」ですが、PyCharmの外部でターミナルを起動すると問題なく動作します。
だから私はパス変数が正しいかどうか疑問に思っています。そして、PyCharmターミナルでecho $ PATHを試しましたが、次のように返されます。
/usr/bin:/bin:/usr/sbin:/sbin
そしてPyCharmの外の端末は以下を返します:
/Library/Frameworks/Python.framework/Versions/3.6/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/share/dotnet:/Library/Frameworks/Mono.framework/Versions/Current/Commands
シェルパスを次のように設定します:/bin/zsh
ちなみに私もIDEAですが、そこにあるものはすべて問題なく動作し、シェルパスはPyCharmにあるものと同じです。
では、PyCharmターミナル(zsh)のパス変数が間違っている原因は何ですか?
私にとって、これを~/.zshrc
ファイルの先頭に追加すると次のようになりました。
# If you come from bash you might have to change your $PATH.
export PATH=$HOME/bin:/usr/local/bin:$PATH
Zshでこの問題が発生します。具体的には、PATHから/usr/local/bin
を失います。これは Pycharmバグトラッカー -にファイルされているので、実際の修正はないようです。
ただし、Pycharmをターミナルからcharm
コマンドを介して直接起動すると、正しいPATH
になります。
これはPyCharmが変数を正しく継承していないことによる問題だと思います。ここにリンクがあります https://intellij-support.jetbrains.com/hc/en-us/community/posts/208567485-Pycharm-terminal-is-missing-part-of-PATH
_echo $PATH
_の先頭に_~/.zshrc
_を追加すると、ターミナルは_/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/local/aria2/bin:/usr/local/MacGPG2/bin:/Applications/Wireshark.app/Contents/MacOS
_を出力し、pycharmシェルは_/usr/bin:/bin:/usr/sbin:/sbin
_を出力します。
したがって、_/usr/libexec/path_helper
_はpycharmシェルでは呼び出されないようです。 _~/.zshrc
_の先頭にeval $(/usr/libexec/path_helper)
を追加できますが、速度が遅く、_export PATH=$HOME/bin:/usr/local/bin:$PATH
_のように手動でパスを追加することをお勧めします。
こんにちは私の場合(Pycharm 2018.3、Ubunt 16.04)、PyCharmを実行しているときにZshを初めて構成する方法に関連しているようです。
私は上記のすべてを試しましたが成功しませんでした。
ある時点で、自分の.zshrcファイルと他のすべての.zshファイル.zsh_historyをバックアップします...ターミナルとPyCharmも閉じている間に、すべてのzsh関連ファイルを削除しました。次に、ターミナルでZshを初めて構成するようにプロンプトを表示し、新しいインストールを構成するための推奨方法を選択しました。用語を閉じて、最初からやり直してください。Zshがデフォルトのシェルになりました。次に、PyCharmetvoilàを開始します!!
もう問題ありません。そして、PyCharmはpipenvでShellを使用してターミナルを起動しますが、問題が発生したときはそうではありませんでした。
屏風もターミナルで起動時に打ち上げられているので、屏風との混同もありましたが、Pycharmには屏風がありません。以前は、ターミナルとPycharmターミナルの両方が一種の単一インスタンスでしたが、私が存在していた場合は、もう一方のインスタンス(実際には単一インスタンス)を終了します。