2015-08-31 2 views
1

Я продолжаю получать эту (известную) ошибку в iPython. Тем не менее, тот же импорт отлично работает на простом Python. (Python 3.3.5, см подробности ниже)iPython: Ошибка загрузки DLL: указанный модуль не найден; plain Python fine

IPython:

Python 3.3.5 (v3.3.5:62cf4e77f785, Mar 9 2014, 10:37:12) [MSC v.1600 32 bit (Intel)] 
Type "copyright", "credits" or "license" for more information. 

IPython 2.0.0 -- An enhanced Interactive Python. 
?   -> Introduction and overview of IPython's features. 
%quickref -> Quick reference. 
help  -> Python's own help system. 
object? -> Details about 'object', use 'object??' for extra details. 

In [1]: import test1 
--------------------------------------------------------------------------- 
ImportError        Traceback (most recent call last) 
<ipython-input-7-ddb30f03c287> in <module>() 
----> 1 import test1 
ImportError: DLL load failed: The specified module could not be found. 

Python (не только он загружает нормально, он также работает):

$ python 
Python 3.3.5 (v3.3.5:62cf4e77f785, Mar 9 2014, 10:37:12) [MSC v.1600 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import test1 
>>> 

Теперь, Dependency Walker на test1. pyd показывает это

[ ? ] LIBGCC_S_DW2-1.DLL Error opening file. The system cannot find the file specified (2). 
[ ? ] LIBSTDC++-6.DLL  Error opening file. The system cannot find the file specified (2). 
[ ? ] PYTHON33.DLL  Error opening file. The system cannot find the file spec 

Я даже переписал sys.path в iPython с одним из простого Python. Файл test1.pyd находится в C: \ Test.

['c:\\Test', 
'c:\\WinPython-32bit-3.3.5.0\\python-3.3.5\\python33.zip', 
'c:\\WinPython-32bit-3.3.5.0\\python-3.3.5\\DLLs', 
'c:\\WinPython-32bit-3.3.5.0\\python-3.3.5\\lib', 
'c:\\WinPython-32bit-3.3.5.0\\python-3.3.5', 
'c:\\WinPython-32bit-3.3.5.0\\python-3.3.5\\lib\\site-packages', 
'c:\\WinPython-32bit-3.3.5.0\\python-3.3.5\\lib\\site-packages\\FontTools', 
'c:\\WinPython-32bit-3.3.5.0\\python-3.3.5\\lib\\site-packages\\win32', 
'c:\\WinPython-32bit-3.3.5.0\\python-3.3.5\\lib\\site-packages\\win32\\lib', 
'c:\\WinPython-32bit-3.3.5.0\\python-3.3.5\\lib\\site-packages\\Pythonwin'] 

Почему импорт должен работать на простом Python, но не в iPython?

+0

Можно добавить в последовательность запуска для IPython, то есть показать выходную информацию вы получаете, когда начинаете iPython? (Как вы сделали для Python.) – Evert

+0

Решил мою проблему в том смысле, что теперь я могу использовать iPython. Это зависит от того, как я начинаю iPython, но это совсем другая история. Если я запустил его из командной строки, просто запустив «ipython», тогда он отлично работает. Тем не менее, если я запустил его, вызвав файл bat, содержащий команду «ipython» (т. Е. Из меню), тогда он терпит неудачу. Но все, что пойдет не так, похоже, не отражается ни в последовательности запуска, ни в sys.path - что в обоих случаях одинаково. –

+0

Чтобы устранить любые сомнения по поводу того, что ipython, ipython и ipython3 в WinPython-32bit-3.3.5.0 \ python-3.3.5 \ Scripts работают при вызове напрямую, выходят из строя при вызове через файл bat. –

ответ

0

У меня такая же проблема возникла. После нескольких часов смотреть и думать. Разница заключается в переменных среды между интерпретацией, которую использует IDE. (простой python и ipython или pycharm и т. д.) Я думаю, что вы можете использовать %env в ipython для проверки текста. Затем используйте (работает в python 3.7)

import os 
os.environ 

проверить текст. Тогда, если есть различия. Многие из них должны быть установлены правильно перед запуском. На самом деле есть много способов установить envs. Например

1、os.environ['环境变量名称']='环境变量值' #其中key和value均为string类型 

2、os.putenv('环境变量名称', '环境变量值') 

Надежда некоторые помогает вам. ~~~ /// (^ v ^) \\ ~~~