Eclipse Pydev: "Ошибка: Python stdlib не найден"
Я пытаюсь добавить интерпретатор (созданный с помощью virtualenv) в PyDev, но я получаю следующую ошибку:
Кажется, что папка Python/Lib (который содержит стандартную библиотеку) не было найдено/выбрано во время процесс установки.
Эта папка (которая содержит такие файлы как threading.py и traceback.py) является для работы PyDev (и он должен содержать фактические исходные файлы, а не только .pyc файлы)...
Обратите внимание, что если это virtualenv установить, папку /Lib с базы необходимо выбрать установку (в отличие от пакеты сайтов, которые по желанию)...
Проблема в том, что в моей установке по умолчанию отсутствует папка /lib... Я создал virtualenv с опцией "no-site-packages"... Как я могу решить? спасибо!
Ответы
Ответ 1
Я уже сталкивался с этим сам. При добавлении интерпретатора, созданного с помощью virtualenv в PyDev, когда он запрашивает папки, которые необходимо добавить в pythonpath SYSTEM, мне нужно было выбрать
/usr/lib/python2.7
/usr/lib/python2.7/lib-tk
/usr/lib/python2.7/plat-linux2
Посмотрите скриншот для того, что я должен был сделать. Здесь temp
- мой virtualenv.
![enter image description here]()
Несмотря на то, что системный каталог Python был добавлен, PyDev не собирал пакеты глобального сайта, поэтому вы все равно достигаете эффекта "no-site-packages". Я предполагаю, что вам нужно будет сделать что-то подобное в Windows, то есть выберите всю папку в диалоговом окне "Выбрать нужный", включая папку C:\Pythonx.x
.
EDIT. Я просто попробовал его с PyDev 2.3 на Eclipse Indigo (Arch Linux с virtualenv 1.7), и кажется, что plat-linux2
не нужно выбирать (не уверен в lib-tk
, но /usr/lib/python2.7
определенно требуется). Спасибо fijiaaron за указание на это.
РЕДАКТИРОВАТЬ 2: Pydev 2.5 (и, вероятно, 2.6 тоже из документов) по-прежнему требуется /Lib
папка для правильной работы, хотя теперь она позволяет игнорировать диалог "Python stdlib not found" и в любом случае добавить интерпретатор (но упоминает, что он все равно должен быть включен позже).
Ответ 2
чтобы пропустить это сообщение в pydev, вы можете создавать ручные символические ссылки на stdlib, не связанные с virtualenv.
Пример:
ln -s /usr/lib/python3.3/threading.py /home/path/to/virtual/myenv/lib/python3.3/threading.py
ln -s /usr/lib/python3.3/traceback.py /home/path/to/virtual/myenv/lib/python3.3/traceback.py
Существует много stdlib, не связанных в virtualenv. Вероятно, вы должны сделать так, как вам нужно.
Посмотрите на /usr/lib/python 3.3 и сравните с /home/path/to/virtual/myenv/lib/python 3.3
Вы можете добавить, например,/usr/lib/python3.3/concurrent/в свой путь pydev.
если вы добавите /usr/lib/python 2.7 (или/usr/lib/python3.3) в качестве предложения г-на Бхадури, вы можете взорвать свой виртуальный диск, потому что ваш пакет может посмотреть каталог сайтов-пакетов в /usr/lib/python 2.7, и это именно то, чего вы не хотите.
Вы хотите изолировать окружающую среду. Вы хотите, чтобы ваш пакет выглядел только в/home/path/to/virtual/myenv/lib/python3.3/site-packages/