Имам пакет, който инсталирах от виртуална среда. Ако просто стартирам интерпретатора на Python, този пакет може да бъде импортиран добре. Въпреки това, ако стартирам Idle, този пакет не може да бъде импортиран (тъй като е наличен само в един конкретен virtualenv, а не глобален). Как мога да стартирам Idle от virtualenv, така че всички пакети от virtualenv да са налични?
Как да стартирате python Idle от виртуална среда (virtualenv)
Отговори (8)
За Python 3.6+, моля, вижте отговора на Paul Wicking по-долу.
В Python преди 3.6 IDLE е по същество
from idlelib.PyShell import main
if __name__ == '__main__':
main()
Така че можете да го стартирате сами, освен ако не сте създали virtualenv без пакети по подразбиране.
bin
.
- person 9000; 08.02.2011
python -c "from idlelib.PyShell import main; main()"
и това ви спестява да пазите някъде скрипт.
- person Ronny Andersson; 17.09.2014
python -m idlelib
- person minopret; 20.08.2015
python -m idlelib.idle
на @MatthewWillcockson работи.
- person Marcin K; 16.05.2019
python3 -m idlelib
или python3 -m idlelib.idle
.
- person Gathide; 13.07.2019
Кратък отговор
- Стартирайте виртуалната среда
- Пусни
python -m idlelib.idle
От този отговор.
Дълъг отговор
Този отговор предполага Python 3.
Има няколко различни мениджъра на виртуална среда, всеки от които има малко по-различен начин за управление на това къде е инсталиран python и как се изпълнява, както е подробно описано в този отговор.
Този отговор предполага, че се използва модулът venv
и че е инсталиран след документите .
Забележка: Някои дистрибуции на Linux пакетират модула venv в отделен пакет: Ubuntu и 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
Виртуалната среда може да бъде стартирана чрез изпълнение на скрипта activate.bat
или Activate.ps1
, в зависимост от това дали cmd
или се използва PowerShell:
:: 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
или риба, активирайте средата чрез:
# Most operating systems
cd my_project_dir
. my_project-venv/bin/activate
За csh
и fish
има специфични за обвивката скриптове за активиране на виртуалната среда (activate.csh
и activate.fish
, съответно) и те могат да се изпълняват като скрипта activate
.
След като виртуалната среда бъде активирана на всички операционни системи, изпълнението на следното ще стартира IDLE с достъп до пакетите, инсталирани във виртуалната среда:
python -m idlelib.idle
alias idle='python -m idlelib.idle'
Можете също да направите това в Windows, като зададете DOSKEY: stackoverflow.com/a/21040825/ 1656488
- person Maksim; 06.09.2018
В Windows скрипт на Python, изпълняван от командния ред като този some_script.py
, може да се изпълнява от друг интерпретатор на Python, различен от този, използван при използване на команда python some_script.py
(зависи от асоциирането на py
файлове). Ако искате да избегнете този проблем, най-добре е да създадете пакетен файл idle.bat
със съдържание python -c "from idlelib.PyShell import main; main()"
и да го поставите в папката Scripts
във virtualenv. Също така, както други отбелязаха, неработещият режим се нуждае от tcl
и tk
папки, за да работи. Най-простото решение е да създадете символни връзки от virtualenv към базовата инсталация на 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
Python 3.6 модернизиран и преработен idlelib
. Тази промяна включваше преименуването на няколко метода. Поради това idlelib.PyShell
сега трябва да бъде достъпен с idlelib.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()
Използвам операционна система Ubuntu 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.
Събирам няколко отговора заедно и ето как правя това в Window с напълно функционален пакетен файл.
Направете idle.bat в директорията Scripts на вашия virtualenv. Той ще създаде (освен ако не съществуват) и двете връзки към tcl и tk (версия 8.5 към момента на писане) и ще ги постави в директорията Lib на virtualenv, след което се задейства на празен ход. Копирайте и поставете точно този код в редактор. Променете имената на пътищата за вашата текуща инсталация на virtualenv и Python (моята е стандартната за 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 (ИЗПЪЛНЕТЕ КАТО АДМИНИСТРАТОР!), за да отворите idle.
cd c:\<path to current virtualenv>\
./Scripts/idle.bat
@biomed Аз съм на Windows и опитвах това. В моята папка python2.6 трябваше да копирам папките python26/tcl/tcl8.5 и python/tcl/tk8.5 в python26/Lib и след това създадох скрипта по-горе в папката със скриптове на моя virtualenv. Работи страхотно.
За мен стартирането на нещо подобно просто работи (Linux терминал):
source venv/bin/activate && python `which idle` &
(venv е пътят към вашия venv очевидно)