Bạn không bao giờ cần phải sửa đổi đường dẫn trực tiếp, thông qua các biến môi trường hoặc sys.path
. Cho dù bạn sử dụng os (ví dụ apt-get
) hoặc pip
trong virtualenv, các gói sẽ được cài đặt đến một vị trí đã có trên đường dẫn.
Trong ví dụ của bạn, GNU Radio được cài đặt vào site-packages
vị trí tiêu chuẩn của hệ thống Python 2 , đã có trong đường dẫn. Chỉ PyCharm vào trình thông dịch chính xác là đủ; nếu nó không có cái gì khác sai mà không rõ ràng. Có thể điều /usr/bin/python
đó không trỏ đến cùng một trình thông dịch mà GNU Radio đã được cài đặt; hãy thử chỉ cụ thể vào python2.7
nhị phân. Hoặc, PyCharm từng hơi tệ trong việc phát hiện các gói; File > Invalidate Caches > Invalidate and Restart
sẽ bảo nó quét lại.
Câu trả lời này sẽ bao gồm cách bạn nên thiết lập môi trường dự án, cài đặt các gói trong các tình huống khác nhau và định cấu hình PyCharm. Tôi giới thiệu nhiều lần đến Hướng dẫn sử dụng bao bì Python , được viết bởi cùng một nhóm duy trì các công cụ đóng gói Python chính thức.
Cách chính xác để phát triển ứng dụng Python là với virtualenv. Các gói và phiên bản được cài đặt mà không ảnh hưởng đến hệ thống hoặc các dự án khác. PyCharm có giao diện tích hợp để tạo gói ảo và cài đặt. Hoặc bạn có thể tạo nó từ dòng lệnh và sau đó trỏ PyCharm vào nó.
$ cd MyProject
$ python2 -m virtualenv env
$ . env/bin/activate
$ pip install -U pip setuptools # get the latest versions
$ pip install flask # install other packages
Trong dự án PyCharm của bạn, đi đến File > Settings > Project > Project Interpreter
. Nếu bạn đã sử dụng virtualenvwrapper
hoặc PyCharm để tạo env, thì nó sẽ hiển thị trong menu. Nếu không, nhấp vào thiết bị, chọn Add Local
và định vị nhị phân Python trong env. PyCharm sẽ hiển thị tất cả các gói trong env đã chọn.
Trong một số trường hợp, chẳng hạn như với GNU Radio, không có gói nào để cài đặt pip
, gói đã được cài đặt toàn hệ thống khi bạn cài đặt phần còn lại của GNU Radio (ví dụ apt-get install gnuradio
). Trong trường hợp này, bạn vẫn nên sử dụng virtualenv, nhưng bạn sẽ cần làm cho nó biết về gói hệ thống này.
$ python2 -m virtualenv --system-site-packages env
Thật không may, nó trông hơi lộn xộn, vì tất cả các gói hệ thống sẽ xuất hiện trong env của bạn, nhưng chúng chỉ là các liên kết, bạn vẫn có thể cài đặt hoặc nâng cấp các gói một cách an toàn mà không ảnh hưởng đến hệ thống.
Trong một số trường hợp, bạn sẽ có nhiều gói cục bộ bạn đang phát triển và sẽ muốn một dự án sử dụng gói khác. Trong trường hợp này, bạn có thể nghĩ rằng bạn phải thêm gói cục bộ vào đường dẫn của dự án khác, nhưng đây không phải là trường hợp. Bạn nên cài đặt gói của bạn trong chế độ phát triển . Tất cả điều này đòi hỏi là thêm một setup.py
tệp vào gói của bạn , dù sao cũng sẽ được yêu cầu để phân phối và triển khai gói đúng cách.
Tối thiểu setup.py
cho dự án đầu tiên của bạn:
from setuptools import setup, find_packages
setup(
name='mypackage',
version='0.1',
packages=find_packages(),
)
Sau đó cài đặt nó trong env dự án thứ hai của bạn:
$ pip install -e /path/to/first/project