Tôi có một gói mà tôi đã cài đặt từ một môi trường ảo. Nếu tôi chỉ khởi chạy trình thông dịch python, gói đó có thể được nhập tốt. Tuy nhiên, nếu tôi khởi chạy Idle, gói đó không thể được nhập (vì nó chỉ có sẵn trong một virtualenv cụ thể và không phải là toàn cục). Làm thế nào tôi có thể khởi chạy Idle từ virtualenv, sao cho tất cả các gói từ virtualenv sẽ có sẵn?Làm thế nào để khởi động python Idle từ một môi trường ảo (virtualenv)
Trả lời
IDLE về bản chất là
from idlelib.PyShell import main
if __name__ == '__main__':
main()
Vì vậy, bạn có thể khởi động nó cho mình, trừ khi bạn đã xây dựng virtualenv mà không cần gói mặc định.
@biomed Tôi đang sử dụng Windows và tôi đã thử cách này. Trong thư mục python2.6 của tôi, tôi đã phải sao chép các thư mục python26/tcl/tcl8.5 và python/tcl/tk8.5 vào python26/Lib và sau đó tôi đã tạo kịch bản ở trên trong thư mục tập lệnh ảo của tôi. Làm việc tuyệt vời.
+1, cảm ơn bạn vì điều này. – Sabuncu
Trên Windows, một tập lệnh Python chạy từ dòng lệnh như thế này some_script.py
có thể được chạy bởi trình thông dịch Python khác so với lệnh được sử dụng khi sử dụng lệnh python some_script.py
(tùy thuộc vào liên kết tệp py
). Nếu bạn muốn tránh vấn đề này, tốt nhất bạn nên tạo một tệp hàng loạt idle.bat
với nội dung python -c "from idlelib.PyShell import main; main()"
và đặt nó trong thư mục Scripts
trong virtualenv. Ngoài ra, giống như những người khác ghi chú không hoạt động cần cả hai thư mục tcl
và tk
để hoạt động. Giải pháp đơn giản nhất là tạo liên kết tượng trưng từ virtualenv đến cơ sở lắp đặt Python như thế này
(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
+1, cảm ơn bạn vì điều này. Chỉ cần lưu ý: KHÔNG cài đặt Python trong Program Files vì không gian trong tên đường dẫn! Virtualenv đã thất bại đối với tôi, và cài đặt lại Python trong C: \ (mặc định) đã sửa nó. – Sabuncu
Tôi không thể lấy tệp idle.bat để làm việc trên hệ thống Python 2.7 của tôi, ngay cả sau khi tạo liên kết thư mục tượng trưng. Ban đầu tôi tạo ra chúng dưới Lib, và idle.bat khởi động thất bại. Sau đó, tôi tạo một thư mục có tên tcl dưới môi trường ảo và tạo ra các liên kết thư mục tượng trưng ở đó, và nó vẫn tạo ra một lỗi: Traceback (cuộc gọi gần đây nhất): "... _tkinter.TclError: Không thể tìm thấy một init có thể sử dụng được .tcl trong các thư mục sau: {C: \ Users \ AMS \ my_env \ tcl \ tcl8.5} C: /Python27/lib/tcl8.5 C: /Users/AMS/my_env/lib/tcl8.5 ... Điều này có thể có nghĩa là Tcl không được cài đặt đúng cách. " Bất kỳ ý tưởng? – Sabuncu
OK, sao chép hai thư mục như Tim đã chỉ ra bên dưới (thay vì liên kết tượng trưng) đã khắc phục sự cố và tôi có thể khởi chạy IDLE qua idle.bat. – Sabuncu
Đưa một vài câu trả lời với nhau và đây là cách tôi làm điều này trên cửa sổ với một tập tin thực thi đầy đủ chức năng.
Đặt idle.bat trong thư mục Scripts ảo của bạn. Nó sẽ tạo (trừ khi chúng tồn tại) cả hai liên kết tới tcl và tk (phiên bản 8.5 bằng văn bản) và đặt chúng vào thư mục lib của virtualenv của bạn sau đó nó sẽ không hoạt động. Sao chép và dán mã này chính xác vào trình chỉnh sửa. Thay đổi tên đường dẫn cho cài đặt virtualenv và Python hiện tại của bạn (tôi là tiêu chuẩn cho 2.7), sau đó lưu nó vào 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()"
Chạy tập lệnh bằng Powershell (RUN AS ADMIN!) Để mở chế độ chờ.
cd c:\<path to current virtualenv>\
./Scripts/idle.bat
Cảm ơn! Tôi đã tìm kiếm một kịch bản chính xác như thế này mà tôi đã thực hiện trước đó trên một máy khác. –
Đối với tôi tung ra một cái gì đó giống như chỉ hoạt động (Linux terminal) này:
source venv/bin/activate && python `which idle` &
(venv là đường dẫn đến venv của bạn rõ ràng)
tôi chạy kịch bản .\(virtualenv dir)\Scripts\activate.bat
từ dòng lệnh, sau đó làm:
python -m idlelib.idle
Từ this answer.
Cảm ơn - công trình này hoàn hảo trên các cửa sổ. – Simon
nó cũng hoạt động trên Mac. –
Tôi đang sử dụng Ubuntu 15.04 hệ điều hành. Tôi đã cài đặt một số gói bằng cách sử dụng virtualenv.
Vì vậy, để chạy các tập tin bên trong virtualenv kể cả những gói tôi sử dụng các lệnh sau trong terminal
(Tên của môi trường ảo của tôi là venv):
#Activate the virtualenv venv
source venv/bin/activate
#To Run IDLE in virtualenv venv
python -m idlelib
Sau khi chạy IDLE, bạn có thể mở tệp bằng cách sử dụng phím tắt ctrl + o phím tắt.
Python 3.6 modernized and refactoredidlelib
. Thay đổi này bao gồm việc đổi tên một số phương thức. Do đó, idlelib.PyShell
hiện phải được truy cập với idlelib.pyshell
. Đoạn mã sau dựa trên câu trả lời được chấp nhận và sẽ hoạt động với bất kỳ phiên bản Python nào:
#!/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()
- 1. Chia sẻ môi trường ảo virtualenv
- 2. Làm thế nào để sao chép/sao chép một môi trường ảo từ máy chủ web
- 3. Sử dụng PIP trong một môi trường ảo, làm thế nào để cài đặt MySQL-python
- 4. làm cách nào để khởi chạy IDLE, môi trường phát triển cho Python, trên Mac OS 10.7?
- 5. Làm cách nào để tự cập nhật pip từ bên trong môi trường ảo của tôi?
- 6. Virtualenv không tạo môi trường
- 7. có môi trường ảo cho node.js không?
- 8. Virtualenv hoạt động như thế nào?
- 9. Làm thế nào để tăng tốc độ khởi động của Powershell trong môi trường 4.0?
- 10. Cách cài đặt PyQt5 trên virtualenv mới và làm việc trên IDLE
- 11. Python IDLE không khởi động trên Windows 7
- 12. Virtualenv: gói trang web toàn cầu so với gói trang web trong môi trường ảo
- 13. Làm thế nào để cài đặt lxml vào virtualenv từ hệ thống cục bộ?
- 14. KVM api để khởi động máy ảo
- 15. Môi trường ảo cho Linux Kernel hack
- 16. Cách sao chép/sao chép một môi trường ảo từ máy chủ đến máy cục bộ
- 17. Làm cách nào để khắc phục sự cố này khi tạo môi trường virtualenv bằng Python tùy chỉnh-xây dựng?
- 18. Làm thế nào để khởi động winpdb từ một kịch bản Python?
- 19. Làm thế nào để chạy một kịch bản python với Python Tools cho Visual Studio trong một virtualenv?
- 20. virtualenv và subprocess.call() trong môi trường hỗn hợp Python 2.7/3.3
- 21. Khởi động lười biếng trong môi trường phát triển
- 22. Làm thế nào để biết môi trường mã nào chạy?
- 23. Trường hợp trong một virtualenv nào mã tùy chỉnh đi?
- 24. Chạy OpenCV từ một virtualenv Python
- 25. virtualenv, python và subversion
- 26. Chạy Python từ virtualenv với Apache/mod_wsgi, trên Windows
- 27. Làm thế nào để tạo một môi trường R mới từ C?
- 28. Làm thế nào để lỗi khởi động xử lý khiếm thị và các môi trường cấp thấp khác
- 29. Làm thế nào để sử dụng các biến Jenkins Môi trường trong kịch bản python
- 30. Làm thế nào để đọc giá trị biến môi trường cửa sổ trong python?
Từ thư mục nào tôi sẽ chạy tập lệnh đó? Cảm ơn –
@Khnle: từ thư mục chứa dự án của bạn, một cách rõ ràng, sau khi bạn đã kích hoạt virtualenv. Tôi chỉ thử nó, và nó hoạt động. Đặt kịch bản này vào 'bin' của virtualenv của bạn. – 9000
Tôi tạo ra một kịch bản nhàn rỗi trong bin/của virtualenv của tôi và tôi sử dụng python virtualenv trong shebang của tôi nhưng nó phàn nàn về việc không thể tìm thấy Tkinter. Tôi đã kiểm tra và Tkinter có thể được nhập khẩu trong python2.7.1 thông thường nhưng tôi không thể nhập Tkinter từ virtualenv python của tôi. Làm thế nào tôi có thể làm cho Tkinter sẵn sàng cho mython virtualenv của tôi (tôi không sử dụng gói trang web nào vì một lý do khác) – biomed