web-dev-qa-db-ja.com

起動方法python仮想環境からアイドル(virtualenv)

仮想環境からインストールしたパッケージがあります。 pythonインタープリターを起動しただけの場合、そのパッケージは正常にインポートできます。ただし、Idleを起動した場合、そのパッケージはインポートできません(グローバルではなく、特定のvirtualenvでのみ使用できるため) 。virtualenvからすべてのパッケージを利用できるように、virtualenvからIdleを起動するにはどうすればよいですか?

43

Python 3.6+については、 下記のPaul Wickingの回答 を参照してください。

Pythonでは、IDLEは基本的に

from idlelib.PyShell import main
if __name__ == '__main__':
  main()

したがって、デフォルトパッケージなしでvirtualenvをビルドしない限り、自分で起動できます。

36
9000

簡潔な答え

  1. 仮想環境を開始する
  2. python -m idlelib.idleを実行します

この答え から。

長い答え

この答えは、Python 3。

いくつかの異なる仮想環境マネージャーがあり、それぞれの処理方法がわずかに異なりますpythonがインストールされ、どのように実行されるか この回答で詳しく説明されています

この回答は venv モジュールが使用され、それが ドキュメントに従ってインストールされた であると想定しています。

注:一部のLinuxディストリビューションはvenvモジュールを別のパッケージにパッケージ化します: bunt および Debian

my_project-venvフォルダー内からpython -m venv my_project-venvを実行して仮想環境がmy_projectというフォルダーにインストールされた場合、仮想環境はモジュールによって作成された新しいフォルダー内にあります。

my_project_dir
      │
      ┝━ my_project-venv

Windowsでは、Python 3.7.1の場合、my_project-venvフォルダー内のファイルは次のようになります。

my_project-venv
      │
      ┝━ Include
      ┝━ Lib
      ┝━ Scripts
      │     ┝━ ...
      │     ┝━ activate.bat
      │     ┝━ Activate.ps1
      │     ┝━ deactivate.bat
      │     ┕━ ...
      │
      ┕━ pyvenv.cfg

cmdまたはPowerShellが使用されているかどうかに応じて)activate.batまたはActivate.ps1スクリプトを実行することにより、仮想環境を開始できます

:: Using cmd.exe
cd my_project_dir
.\my_project-venv\Scripts\activate.bat
# Using PowerShell
cd my_project_dir
.\my_project-venv\Scripts\Activate.ps1

注:これらのスクリプトをダブルクリックして実行した場合、これらのスクリプトはシェルを開いたままにしません。シェルを起動し、上記のコマンドを入力して実行し、プロジェクトのフォルダー名を変更します

他のほとんどのオペレーティングシステムでは、仮想環境フォルダーは次のようになります。

my_project-venv
      │
      ┝━ bin
      │     ┝━ ...
      │     ┝━ activate
      │     ┝━ activate.csh
      │     ┝━ activate.fish
      │     ┕━ ...
      │
      ┝━ include
      ┝━ lib
      ┝━ lib64
      ┕━ pyvenv.cfg

次に、cshまたは fish 以外のシェルから、次のようにして環境をアクティブにします。

# Most operating systems
cd my_project_dir
. my_project-venv/bin/activate

cshおよびfishには、仮想環境をアクティブにするためのシェル固有のスクリプト(それぞれactivate.cshおよびactivate.fish)があり、activateスクリプト。

すべてのオペレーティングシステムで仮想環境がアクティブ化されたら、次のコマンドを実行すると、仮想環境にインストールされているパッケージにアクセスしてIDLEが起動します。

python -m idlelib.idle
58

Windowsでは、Pythonこのようなコマンドラインから実行されるスクリプト_some_script.py_は、他のPythonインタプリタで_python some_script.py_コマンド(これはpyファイルの関連付けに依存します)この問題を回避したい場合は、コンテンツpython -c "from idlelib.PyShell import main; main()"を含むバッチファイル_idle.bat_を作成して配置するのが最善ですは、virtualenvのScriptsフォルダーにあります。また、他の指摘したように、アイドルはtcltkの両方のフォルダーが機能する必要があります。最も簡単な解決策は、virtualenvからbase Pythonこのようなインストール

_(2.7) c:\python\virtualenv\2.7\Lib>mklink /d tcl8.5 "c:\Program Files\Python\2.7\tcl\tcl8.5"
symbolic link created for tcl8.5 <<===>> c:\Program Files\Python\2.7\tcl\tcl8.5
(2.7) c:\python\virtualenv\2.7\Lib>mklink /d tk8.5 "c:\Program Files\Python\2.7\tcl\tk8.5"
symbolic link created for tk8.5 <<===>> c:\Program Files\Python\2.7\tcl\tk8.5
_
9
Piotr Dobrogost

Python 3.6 最新化およびリファクタリングidlelib。この変更には、いくつかのメソッドの名前の変更が含まれています。このため、idlelib.PyShellidlelib.pyshellでアクセスする必要があります。次のスニペットは承認された回答に基づいており、Pythonバージョンで機能します。

#!/usr/bin/env python
"""Simple script to run Idle from a venv in PyCharm."""

try:
    # Import for Python pre 3.6
    from idlelib.PyShell import main
except ModuleNotFoundError:
    # Import for Python version 3.6 and later
    from idlelib.pyshell import main

if __name__ == '__main__':
    main()
5
Paul Wicking

いくつかの回答をまとめると、完全に機能するバッチファイルを使用してWindowでこれを行う方法を次に示します。

VirtualenvのScriptsディレクトリにidle.batを作成します。 (存在しない限り)tclとtk(執筆時点ではバージョン8.5)への両方のリンクを作成し、virtualenvのLibディレクトリに配置すると、アイドル状態で起動します。このコードをコピーして、エディターに正確に貼り付けます。現在のvirtualenvのパス名を変更し、Python install(mineは2.7の標準です)してから、Scripts/idle.batに保存します。

IF EXIST C:\<path to current virtualenv>\Lib\tcl8.5 (
REM do nothing
) ELSE (
    mklink /d C:\<path to current virtualenv>\Lib\tcl8.5 "c:\Python27\tcl\tcl8.5"
)
IF EXIST C:\<path to current virtualenv>\Lib\tk8.5 (
REM do nothing
) ELSE (
    mklink /d C:\<path to current virtualenv>\Lib\tk8.5 "c:\Python27\tcl\tk8.5"
)

python -c "from idlelib.PyShell import main; main()"

Powershellでスクリプトを実行し(RUN AS ADMIN!)、アイドルを開きます。

cd c:\<path to current virtualenv>\
./Scripts/idle.bat
3
srock

@biomed私はWindowsを使っていて、これを試していました。私のpython2.6フォルダーで、python26/tcl/tcl8.5およびpython/tcl/tk8.5フォルダーをpython26/Libにコピーする必要があり、その後、virtualenvのスクリプトフォルダーに上記のスクリプトを作成しました。よく働きました。

2
Tim

buntu 15.04オペレーティングシステムを使用しています。 virtualenvを使用していくつかのパッケージをインストールしました。

したがって、これらのパッケージを含めてvirtualenv内のファイルを実行するには、ターミナルで次のコマンドを使用します

(私の仮想環境の名前はvenv):

#Activate the virtualenv venv
source venv/bin/activate

#To Run IDLE in virtualenv venv
python -m idlelib

[〜#〜] idle [〜#〜]を実行した後、ctrl + oキーボードショートカットを使用してファイルを開くことができます。

2
arsho

私にとってはこのようなものを起動するだけでうまくいきます(Linuxターミナル):

source venv/bin/activate && python `which idle` &

(venvは明らかにvenvへのパスです)

1
yan