可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I have a problem getting PyDev on eclipse to recognize already installed modules. Here is my detailed approach. The machine is a Mac (Snow Leopard).
In terminal the command
python --version
shows Python 2.6.6.
import unidecode
and
from unidecode import unidecode
work both fine!
I installed PyDev in Eclipse and went to configured the python interpreter (Auto Config). I selected all the proposed packages and hit Apply and Ok.
But eclipse keeps complaining
Traceback (most recent call last):
File "/Users/me/Documents/workspace/myproject/python/pythontest.py", line 12, in <module>
from unidecode import unidecode
ImportError: No module named unidecode
The python file looks like this
#!/usr/bin/env python
# encoding: utf-8
import sys
import os
from unidecode import unidecode
def main():
print unidecode(u"Ågot Aakra")
if __name__ == '__main__':
main()
When I remove the first line in the script
#!/usr/bin/env python
it results into the same error.
Does someone know where the problem lies?
回答1:
This is the solution to my problem:
- Find out the path to the folder
../site-packages/
of your corresponding python version. ( For me it was /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/
for python 2.6 on my Mac with Snoe Leopard.)
- Open eclipse preferences and go to PyDev -> Interpreter - Python.
- On the left side of the lower box, click on New Folder.
- Add the navigate to
../site-packages/
of your corresponding python version.
- Hit open.
- Hit Apply.
- Hit Ok.
And you should be good to go. =)
Thanks @all particionts, who provided hints into the right direction in the comments.
回答2:
I ran into the same problem just today. I am using pydev and had a working project with a number of sub-packages. Suddenly after having created a new module I was not able to use this module in a different package. The puzzling feature was that I could use another module in the same sub-package...
Finally after
- eclipse restart
- remove/add python interpreter and all site-packages
- annoyed head-scratching
I deleted all compiled classes with the following script:
import os
def clean_folder(folder):
for file in os.listdir(folder):
path = os.path.join(folder,file)
if os.path.isdir(path):
clean_folder(path)
if '.pyc' == file[-4:]:
print 'deleting: ' + str(path)
os.remove(path)
if __name__ == '__main__':
folder = 'YOUR_PROJECT_SRC_PATH'
clean_folder(folder)
and finally I can do 'actual' work :)
Hope it helps somebody...
回答3:
You can simply add the module to the pydev path. Go to project properties (from the context menu) -> PyDev -> PYTHONPATH -> External Libraries. Depending on whether the module is in a source folder or a zip/egg file, select either Add source folder or Add zip/jar/egg. Navigate to the site-packages directory and point to the relevant file or folder (mine is: /usr/local/lib/pythonx.x/site-packages)
回答4:
When Eclipse gets 'lost' with respect to what packages exists on your system or in your project, from the context menu of your project, choose 'Properties' menu item, then the 'PyDev - PYTHONPATH' item in the treeview on the left of the dialog, then the 'Force restore internal info' button. Seemingly, PyDev keeps a computed cache of the info and when for any reason the cache becomes incoherent, you can force PyDev to recompute.
回答5:
In my case I was not getting this error before compiling, but when I compile I got the error ImportError: No module named myant.core. I tried to add the files from PyDev-PYTHONPATH, but again I got the same error. Then I realized that I actually do not have to add the path exactly to the folder where my .py files are located. Infact I have to add the folder where myant.core is located. After doing this I did a restart when I recompiled my project again, the problem was fixed. I would share that I have:
Python 2.7 Eclipse kepler 4.3, PyDev 3.9.2 and on my ubuntu 14.04
.py files location:/${PROJECT_DIR_NAME}/src/myant/core
, therefore I added /${PROJECT_DIR_NAME}/src
回答6:
Try preferences > pydev > interpreter - python and removing and re-adding the python interpreter (make sure you know the path to it before you delete it), when you re-add it tick all the boxes.
回答7:
@Aufwind your answer above helped but didn't solve for me.
- Find the path to the folder ../site-packages/ ....
- Open eclipse preferences and go to PyDev -> Interpreter - Python.
- On the left side of the lower box, click on New Folder.
---> here I departed from your instructions. I added the egg for the module that wasn't being recognized. Adding the site-packages folder didn't fix it.
- Hit open.
- Hit Apply.
- Hit Ok.
And then I was good to go. =)
回答8:
- Open eclipse window -> preferences and go to PyDev -> Interpreter.
- click on 'Check if interpreters are synchronized with environment'
This did it for me. No Eclipse restart was required.
回答9:
I fixed this problem by going to the project properties -> PyDev Django
and setting the Django settings module.
回答10:
For Oxygen 2 (I think it worked on earlier versions, too)...
- Right click on project folder and select "Properties"
- Select "PyDev - Interpreter/Grammar"
- Click on "Click here to configure an interpreter not listed"
- Select any existing interpreter from the top list of configured interpreters
- A "Selection Needed" dialog should appear where you must select one or more interpreters to restore. Check all that apply
- Click "Ok" and PyDev will rescan, and I assume, rebuild some internal view of your site-packages
- Click "Apply and Close" to close all dialogs
To make the import error markup disappear in my code editor, I need to type a space after the offending import then save the change. The import error then disappears because PyDev can now find the offending import module.
回答11:
Suppose your eternal module is in /.
Launch Eclipse and go to the project option. Select "PyDev-PYTHONPATH"
and on the right you will see a tabbed window. Select External Libraries there.
Click on Add Source Folder and select your library from the above path.