Подтвердить что ты не робот

Eclipse Pydev: "Ошибка: Python stdlib не найден"

Я пытаюсь добавить интерпретатор (созданный с помощью virtualenv) в PyDev, но я получаю следующую ошибку:

Кажется, что папка Python/Lib (который содержит стандартную библиотеку) не было найдено/выбрано во время процесс установки.

Эта папка (которая содержит такие файлы как threading.py и traceback.py) является для работы PyDev (и он должен содержать фактические исходные файлы, а не только .pyc файлы)...

Обратите внимание, что если это virtualenv установить, папку /Lib с базы необходимо выбрать установку (в отличие от пакеты сайтов, которые по желанию)...

Проблема в том, что в моей установке по умолчанию отсутствует папка /lib... Я создал virtualenv с опцией "no-site-packages"... Как я могу решить? спасибо!

4b9b3361

Ответ 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/