PyCharm module import error

2019-02-26 19:21发布

问题:

I am new to PyCharm and am having difficulty importing modules that I have written into the Python console. If I try to import a module that is native to Python I can import that module without difficulty but if I try to import a module that I have written I get an ImportError: No module named 'ModuleITriedToImportName'. For instance here is a simple self written module to pickle files called "filepickle":

import pickle

def saveDbase(filename, object):
    file = open(filename, 'wb')
    #pickle.dump(object, file)       # pickle to file
    #pickle.dump(object, open(filename, 'wb'))
    pickle.dump(object, file)
    file.close()                     # any file-like object will do

def loadDbase(filename):
    file = open(filename, 'rb')
    object = pickle.load(file)       # unpickle from file
    file.close()                     # recreates object in memory
    return object

If I try to "import pickle" at the PyCharm Python Console then the import works without any error. If I try to "import filepickle" I receive the error message:

ImportError: No module named 'filepickle'

The module filepickle works just fine if I run filepickle within PyCharm but I am unable to import filepickle in the Python console. If anybody knows how to get PyCharm to allow me to import modules that I have written into the PyCharm Python console I would appreciate the help.

回答1:

I couldn't reproduce your error (PyCharm 5.0.4, OS X 10.10.5, Python 3.4.3/2.7.6). You could try run this code in a console to find out the current working directory, and if it's not the same as filepickle's one, most likely it is the problem.

import os
os.getcwd()


回答2:

I had exactly the same problem.

The solution is to mark the module directory as "Source Root", and also configure Python to import "Source Root" directories.

For screenshots on how to do this, see the answer from Contango here:

PyCharm does not recognize modules installed in development mode

IMHO, this is a bug in PyCharm: this should just work, and it shouldn't require two separate steps to get anything working.

This issue is present in PyCharm Community Edition 2017.2.3 on Windows 10 (and probably Linux as well).