Pydev "Undefine variable from import" использует pygame на Ubunutu, но не на Windows - PullRequest
1 голос
/ 21 декабря 2011

В двух словах

В Ubuntu 11.10 для библиотеки pygame pydev сообщает "неопределенные переменные из импорта".На Windows 7 все нормально.На обеих платформах код работает правильно.

Это та же ошибка, что и этой нити связка из других).Удаление и повторное добавление моего переводчика ничего не изменило.Я также попытался включить pygame в качестве принудительной встроенной библиотеки, но это ничего не изменило (я проверил, что pygame был в системе PYTHONPATH).

Configs

В Ubuntu и Windows,Я использую Eclipse Indigo и Python 3.2.

В Ubuntu я использую:

  • Ubuntu 11.10
  • Pygame 1.9.2pre, скомпилированный из pygame HgСделки рЕПО.После сборки и установки папка site-packages / pygame содержит несколько файлов .so и .py.

В Windows7:

  • Windows 7 pro с SP1
  • Pygame 1.9.2pre из lfd.uci.edu .MSI создал несколько файлов .pyd и .py в папке site-packages / pygame.

Я понимаю, что статический анализ не может идти внутрь .so файлов в Ubuntu.Я также понимаю, что Python - это динамический язык.Следовательно, у pydev есть ограничения, присущие статическому анализу.Но pydev в Windows 7 удается связать классы внутри файлов .pyd, которые являются динамическими библиотеками.Зачем?И как я могу заставить его работать в Ubuntu?

Подсказки?

import pygame
from pygame.locals import *

С помощью приведенного выше кода в Ubuntu я могу нажать ctrl (или f3) в пакете pygame, но нена pygame.locals.В Windows я могу перейти к обоим.

import pygame
import pygame.locals
from pygame.locals import *

Теперь я могу перейти к pygame.locals.Я думаю, это помогло pydev выяснить, что «ожидать», так как locals.py действительно существует в папке site-packages / pygame.Но я не хочу менять весь мой код только для того, чтобы соответствовать pydev

В любом случае, строка ниже по-прежнему вызывает «неопределенную переменную из импорта» в Ubuntu, но не в Windows.

except pygame.error:

PS: Если это поможет, у меня есть 64-битный Lenovo T410и установил все на 64 бита.

1 Ответ

0 голосов
/ 28 декабря 2011

Я только что проверил его здесь, в Ubuntu, и, похоже, он работает для меня должным образом ... Можете ли вы опубликовать следующее, чтобы попытаться помочь вам исправить это:

1 ,Удалите «pygame» из ваших принудительных встроенных функций, если вы добавили его (он не нужен для этого конкретного случая использования ... глядя на его структуру, кажется, что статический анализатор должен быть в состоянии справиться с ним должным образом, и.so файлы в pygame будут автоматически обрабатываться оболочкой, поэтому нет необходимости явно с этим обращаться).

2 . Имея программу с:

import sys
print '\n'.join(sorted(sys.path))
import pygame.locals
print pygame
print pygame.locals

Какой вывод он выдает при запуске из PyDev?(Мне интересно знать полный путь к pygame, выдаст ли он ImportError во время выполнения и вашу полную PYTHONPATH)

3 .У вас есть ошибки в журнале ошибок?(PyDev может анализировать файлы .so, но он запустит отдельную оболочку Python и свяжется с ней через сокеты, так что, возможно, что-то там блокирует).

...