импорт sympy не работает

Я могу нормально импортировать sympy в терминал, но как только я сохраняю его как файл .py и запускаю, он дает мне следующую ошибку:

Traceback (most recent call last):
File "/Users/Dao/Desktop/sympy.py", line 3, in <module>
    from sympy import Symbol
File "/Users/Dao/Desktop/sympy.py", line 3, in <module>
    from sympy import Symbol
ImportError: cannot import name Symbol
[Finished in 0.0s with exit code 1]

Я немного смущен, почему это происходит... Есть идеи?

Благодарю вас!


person Dao Lam    schedule 06.11.2012    source источник


Ответы (3)


Этот путь:

/Users/Dao/Desktop/sympy.py

создает впечатление, что у вас есть собственный файл с именем sympy.py. Если это правда, то он скрывает библиотеку sympy. Другими словами, когда вы вводите from sympy import Symbol, Python считает, что ваша программа — это та, из которой вы хотите импортировать Symbol, что не сработает.

(1) Переименуйте вашу программу и (2) удалите все файлы Desktop/sympy.pyc или Desktop/sympy.pyo, которые у вас есть. Тогда, если sympy правильно установлен (а судя по тому, что вы говорите, что его можно импортировать, то, вероятно, так оно и есть), должно работать:

>>> from sympy import Symbol
>>> Symbol
<class 'sympy.core.symbol.Symbol'>
person DSM    schedule 06.11.2012

Вероятно, у вас есть две разные версии Python. Попробуйте ввести:

which python

В вашей командной строке и установите это как вашу версию в вашем скрипте с помощью shebang (#!) В вашем скрипте. Запустите его как экзакутакль, выполнив команду chmod +x.

person redman    schedule 06.11.2012
comment
Как запустить исполняемый файл на Mac? Я пытался сделать ./filename, но это не сработало... Спасибо! - person Dao Lam; 06.11.2012
comment
Я не знаю насчет Mac, но я предполагаю, что это похоже на Linux. Если это так, перед выполнением ./filename вы должны изменить режим файла на исполняемый, выполнив: chnode+x имя файла в командной строке - person redman; 06.11.2012
comment
да, я сделал chnmod +x имя файла перед выполнением ./filename - person Dao Lam; 06.11.2012
comment
Может быть, имя файла chmod ug+x? Извините, я не могу экспериментировать с этим. - person redman; 06.11.2012

sympy не имеет класса Symbol напрямую. Это нижний модуль ядра.

вы можете импортировать его from sympy.core.symbol import Symbol

Обратите внимание, что модуль sympy включен в ваш путь к Python.

person gsagrawal    schedule 06.11.2012
comment
Нет, на самом деле Symbol импортируется в пространство имен sympy, поэтому from sympy import Symbol должно работать. - person Ronan Lamy; 10.11.2012