0

我在以下工作:

  • Windows 7的
  • 64 位 Python 3.3

我想将writer.pyx(是的,Cython)导入main.py. 在顶部main.py,我有适当的导入语句:

import writer

两者main.pywriter.pyx都在同一个目录中,并且该目录也在 Windows 的 PYTHONPATH 环境变量中。但是,它给了我错误ImportError: No module named 'writer'。所以,据我所知,它应该可以工作。

但是,这里是踢球者:在同一个目录中,有一个名为的文件reader.pyx,我也正在导入main.py它 - 它运行良好。没有问题,没有错误。

所以,清晰的总结:

  • main.py正在import学习writer.pyxreader.pyx
  • 所有三个文件都在同一个目录中(并且 PYTHONPATH 列出了该目录)
  • reader.pyx进口罚款,但writer.pyx抛出ImportError: No module named 'writer'

关于如何解决这个问题的任何想法?

视觉表现:

import reader
import writer

def function():
    # code

PS这不是我的代码,它曾经在这台计算机上运行得很好,此后代码没有改变。这让我相信这是一个环境问题,但我不确定是什么。也许与 Cython 有什么关系?我对此没有任何实际经验。

4

3 回答 3

0

From what I understand, pyx files need to be compiled before they can be loaded. You can do this from within your script by using pyximport, if you first issue:

import pyximport; pyximport.install(pyimport = True)

On top of that, based on the fact that there seems to be another reader.py in your path, I'd suggest you create a folder in the same directory where main.py resides (say you name it test_imports) and put both reader.pyx and writer.pyx there, so that you're sure you're importing those files when you issue:

from test_imports import reader, writer

Note that the test_imports directory will also need an empty __init__.py file that tells Python it is a package.

于 2013-05-07T18:37:12.097 回答
0

你在一个包里工作吗?如果是这样,您将需要使用包名称导入它:

from mypackage import writer
于 2013-05-07T13:33:39.943 回答
0

我看到有两个选项。首先,请记住,您的 PYTHONPATH 在 Eclipse 和 Windows 中可能不同。Eclipses 改变了路径。二、请试试这个

from writer import *

并让我们知道是否会找到 writer 包

于 2013-05-07T14:24:08.800 回答