Затмение Pydev: «Ошибка: Python stdlib не найден» - PullRequest
25 голосов
/ 07 июля 2011

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

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

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

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

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

Ответы [ 2 ]

23 голосов
/ 08 июля 2011

Я уже сталкивался с этим раньше. При добавлении интерпретатора, созданного с помощью virtualenv в PyDev, когда он запрашивает папки, которые необходимо добавить в pythonpath SYSTEM, мне пришлось выбрать
/usr/lib/python2.7
/usr/lib/python2.7/lib-tk
/usr/lib/python2.7/plat-linux2
Смотрите на скриншот для того, что я должен был сделать. Здесь temp - мой виртуал.

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 за указание на это.

EDIT 2 : Pydev 2.5 (и, вероятно, тоже 2.6, из документов ) по-прежнему требует, чтобы папка /Lib работала правильно, хотя теперь она позволяет игнорировать "Python" Диалоговое окно stdlib not found "и все равно добавляет интерпретатор (но упоминает, что он все еще должен быть включен позже).

0 голосов
/ 29 августа 2013

чтобы пропустить это сообщение в 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/python3.3 и сравните с /home/path/to/virtual/myenv/lib/python3.3

Например, вы можете добавить /usr/lib/python3.3/concurrent/ в путь pydev.

, если добавите /usr/lib/python2.7 (или /usr/lib/python3.3) как подсказывает мистер Бхадури, вы можете взорвать ваш virtualenv, потому что ваш пакет может посмотреть в каталог site-packages в /usr/lib/python2.7, и это именно то, что вам не нужно.

Вы хотите изолировать свою среду .Вы хотите, чтобы ваш пакет выглядел только в /home/path/to/virtual/myenv/lib/python3.3/site-packages/

...