Pycharm環境をコマンドラインにある環境と一致させるのに問題があります。私は最近pythonを削除し、自作で再インストールしました。パスのpythonが/usr/local/bin/python
を指しているので、PATH=/usr/local/bin:$PATH
を追加しました.bash_profileファイルの先頭で、コマンドラインのインターパーターで次のコードをうまく実行できます。ただし、プロジェクトに/usr/local/bin/python
を追加すると、pythonインタープリターが実行されます。以下のコードで属性エラーが発生します。Pycharmにコマンドラインと同じ環境を使用させる方法を誰かが説明できますか?
import sqlite3
db = "mydb.db"
conn = sqlite3.connect(db)
conn.enable_load_extension(True)
AttributeError: 'sqlite3.Connection'オブジェクトに属性がありません 'enable_load_extension'
.bash_profile
はbash(コマンドラインインタープリター)によってのみ読み取られます。ただし、PyCharmのbash環境を保持する場合は、真のLinuxの方法が1つあります。
コマンドラインから(bashから)PyCharmを実行します。したがって、環境変数はbashからpycharmに継承されます。 Linux環境の継承プロセスについては、$man
environをお読みください。したがって、必要なのはコマンドラインから${PATH_TO_PYCHARM}/bin/pycharm.sh
を起動することだけです。または、PyCharmを起動するためにbashを呼び出すランチャーを作成します。
それでおしまい !それがあなたのために働くことを願っています。
PyCharmバージョン2016.3を使用していて、PyCharmターミナルがと同じデフォルト環境を提供していないことに気付いた場合)MacOsターミナル環境、それは バグ であり、2016.3.1で修正される必要があります-リリースされるたびに。それまでの間、以下は、すべてのPyCharmプロジェクトをPyCharm-Terminalのようなより多くのMacOS-Terminalに「デフォルト」で戻す必要がある回避策です。
次の内容で〜/ .bashrcファイルを作成します:source /etc/bashrc source /etc/bashrc_Apple_Terminal source ~/.bash_profile
これはすべきですPyCharmターミナル(インタラクティブbashセッション)をセットアップし、MacOSターミナル(ログインbashセッション)。 JetBrainsがパッチを適用して2016.3.1をリリースしたら、これを削除することをお勧めします~/.bashrc
ファイル。うまくいけば、これで私たち全員が正常に戻るでしょう。
編集:この回避策がPyCharm 2016.3.のためのものであることを明確にする
次のコマンドを実行することを強くお勧めします
source ~/.bash_profile
2016.3.1がリリースされるまでの各ターミナルセッションの開始時。
ただし、このバグには回避策があります。ターミナルスクリプトでは2つの関数名が逆になっているように見えるため、名前を変更する必要があります。
これを行うには、アプリのターミナルプラグインスクリプトを編集する必要がありますが、これはお勧めしません。
MacOSXでは、これはPyCharmがグローバルにインストールされている場合、ここにあります(他にどこにあるかわからない)。
cd /Applications/PyCharm.app/Contents/plugins/terminal
選択したテキストプロセッサを使用して、「jediterm-bash.in」ファイルを編集します。このように見える必要がある場合:
#!/bin/bash
function load_login_configs {
# When bash is invoked as an interactive login Shell, or as a non-interac-
# tive Shell with the --login option, it first reads and executes commands
# from the file /etc/profile, if that file exists. After reading that
# file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in
# that order, and reads and executes commands from the first one that
# exists and is readable.
if [ -f /etc/profile ]; then
source /etc/profile
fi
if [ -f ~/.bash_profile ]; then
source ~/.bash_profile
else
if [ -f ~/.bash_login ]; then
source ~/.bash_login
else
if [ -f ~/.profile ]; then
source ~/.profile
fi
fi
fi
}
function load_interactive_configs {
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
}
if [ `shopt -q login_Shell` ]; then
load_login_configs
fi
load_interactive_configs
# mappings for Ctrl-left-arrow and Ctrl-right-arrow for Word moving
bind '"\e\e[C":forward-Word'
bind '"\e\e[D": backward-Word'
bind '"\e\O[C":forward-Word'
bind '"\e\O[D": backward-Word'
function generate_command_executed_sequence() {
printf '\e\7'
}
export -f generate_command_executed_sequence
#generate escape sequence after command is executed to notify jediterm emulator
trap "generate_command_executed_sequence" DEBUG
if [ -n "$JEDITERM_USER_RCFILE" ]
then
source $JEDITERM_USER_RCFILE
fi
if [ -n "$JEDITERM_SOURCE" ]
then
source $JEDITERM_SOURCE
fi
次の関数の名前を変更します。
load_login_configs
=> load_interactive_configs
load_interactive_configs
=> load_login_configs
最終的なスクリプトは次のようになります。
#!/bin/bash
function load_interactive_configs {
# When bash is invoked as an interactive login Shell, or as a non-interac-
# tive Shell with the --login option, it first reads and executes commands
# from the file /etc/profile, if that file exists. After reading that
# file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in
# that order, and reads and executes commands from the first one that
# exists and is readable.
if [ -f /etc/profile ]; then
source /etc/profile
fi
if [ -f ~/.bash_profile ]; then
source ~/.bash_profile
else
if [ -f ~/.bash_login ]; then
source ~/.bash_login
else
if [ -f ~/.profile ]; then
source ~/.profile
fi
fi
fi
}
function load_login_configs {
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
}
if [ `shopt -q login_Shell` ]; then
load_login_configs
fi
load_interactive_configs
# mappings for Ctrl-left-arrow and Ctrl-right-arrow for Word moving
bind '"\e\e[C":forward-Word'
bind '"\e\e[D": backward-Word'
bind '"\e\O[C":forward-Word'
bind '"\e\O[D": backward-Word'
function generate_command_executed_sequence() {
printf '\e\7'
}
export -f generate_command_executed_sequence
#generate escape sequence after command is executed to notify jediterm emulator
trap "generate_command_executed_sequence" DEBUG
if [ -n "$JEDITERM_USER_RCFILE" ]
then
source $JEDITERM_USER_RCFILE
fi
if [ -n "$JEDITERM_SOURCE" ]
then
source $JEDITERM_SOURCE
fi
PyCharmを保存して再起動すると、準備が整います。
別のアプローチは、環境変数を設定するスクリプトを調達することです(たとえば、.bash_profile
)行を追加することによって. /path/to/script
からPY_CHARM_INSTALL_DIR/bin/pycharm.sh
。
その後、クイックランチなどを使用してpycharmを実行すると、変数が存在します。
残念ながら、Mac OS Xでは、グラフィックアプリケーションは.bash_profile構成を継承しません。 GUIレベルで環境変数を設定する方法について、OSX 10.11の更新された回避策を投稿しています。
〜/ .bash_profileを読み取り、そこにエクスポートされた環境変数をGUIアプリケーション用に設定する osx-env-sync という便利なリポジトリがあります。 2つのファイルをコピーし、githubページで説明されている他の2つのコマンドを実行した後、bash_profileで定義されているグローバル変数を使用してPycharmをクイックスタートで起動できます。
This リンクは、さらに背景情報を提供します。
私にとってうまくいったのは、アプリケーションからではなく、chramを使用するターミナルからpycharmを実行することでした。次に、すべての環境変数とパスを継承しました
私は実際にPyCharm 2017.1.2で動作するこのための解決策を見つけました
チェックを外すツール>ターミナル>「シェル統合」
ソース:ページの下部近くにある@Federicojamaからの回答 https://intellij-support.jetbrains.com/hc/en-us/community/posts/208567485-Pycharm-terminal-is-missing-part- of-PATH