web-dev-qa-db-ja.com

コマンドラインとは異なるPycharm環境

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'

19
CLJ

.bash_profileはbash(コマンドラインインタープリター)によってのみ読み取られます。ただし、PyCharmのbash環境を保持する場合は、真のLinuxの方法が1つあります。

コマンドラインから(bashから)PyCharmを実行します。したがって、環境変数はbashからpycharmに継承されます。 Linux環境の継承プロセスについては、$manenvironをお読みください。したがって、必要なのはコマンドラインから${PATH_TO_PYCHARM}/bin/pycharm.shを起動することだけです。または、PyCharmを起動するためにbashを呼び出すランチャーを作成します。

それでおしまい !それがあなたのために働くことを願っています。

20
DmitryFilippov

PyCharmバージョン2016.3を使用していて、PyCharmターミナルと同じデフォルト環境を提供していないことに気付いた場合)MacOsターミナル環境、それは バグ であり、2016.3.1で修正される必要があります-リリースされるたびに。それまでの間、以下は、すべてのPyCharmプロジェクトをPyCharm-T​​erminalのようなより多くのMacOS-Terminalに「デフォルト」で戻す必要がある回避策です。

次の内容で〜/ .bashrcファイルを作成します:source /etc/bashrc source /etc/bashrc_Apple_Terminal source ~/.bash_profile

これはすべきですPyCharmターミナル(インタラクティブbashセッション)をセットアップし、MacOSターミナル(ログインbashセッション)。 JetBrainsがパッチを適用して2016.3.1をリリースしたら、これを削除することをお勧めします~/.bashrcファイル。うまくいけば、これで私たち全員が正常に戻るでしょう。

5
cmlccie

編集:この回避策が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を保存して再起動すると、準備が整います。

2
ccray

別のアプローチは、環境変数を設定するスクリプトを調達することです(たとえば、.bash_profile)行を追加することによって. /path/to/scriptからPY_CHARM_INSTALL_DIR/bin/pycharm.sh

その後、クイックランチなどを使用してpycharmを実行すると、変数が存在します。

2
Temak

残念ながら、Mac OS Xでは、グラフィックアプリケーションは.bash_profile構成を継承しません。 GUIレベルで環境変数を設定する方法について、OSX 10.11の更新された回避策を投稿しています。

〜/ .bash_profileを読み取り、そこにエクスポートされた環境変数をGUIアプリケーション用に設定する osx-env-sync という便利なリポジトリがあります。 2つのファイルをコピーし、githubページで説明されている他の2つのコマンドを実行した後、bash_profileで定義されているグローバル変数を使用してPycharmをクイックスタートで起動できます。

This リンクは、さらに背景情報を提供します。

1
TinaW

私にとってうまくいったのは、アプリケーションからではなく、chramを使用するターミナルからpycharmを実行することでした。次に、すべての環境変数とパスを継承しました

0
Ami Mahloof

私は実際にPyCharm 2017.1.2で動作するこのための解決策を見つけました

チェックを外すツール>ターミナル>「シェル統合」

ソース:ページの下部近くにある@Federicojamaからの回答 https://intellij-support.jetbrains.com/hc/en-us/community/posts/208567485-Pycharm-terminal-is-missing-part- of-PATH

0