导入没有空字节的模块时,我得到ValueError:源代码字符串不能包含空字节

时间:2017-07-31 23:49:35

标签: python python-3.x python-module

Python不导入模块!

marketing
    ├───__init__.py
    ├───analyzation\
    │   ├───__init__.py
    │   ├───analyzer.py
    ├───api\
    ├───test\
    │   ├───test_res\ (not important)
    │   ├───__init__.py
    │   ├───test_analyzer.py

以上是我的文件夹结构。因此,在analyzer.py我有一个类DataSet,除了pandas的一些导入和方法import random中的导入之外别无其他。

test_analyzer.py中,我有一个子类unittest.TestCase的类。此脚本尝试测试正在导入的以下类:import marketing.analyzation.analyzer(不起作用)。错误消息如下:

Traceback (most recent call last):
  File ".\test_analyzer.py", line 1, in <module>
    import marketing.analyzation.analyzer
ValueError: source code string cannot contain null bytes

为了确保它不是一些愚蠢的vim错误,我重新输入analyzer.py。花了至少2个小时尝试解决这个问题,另外一个小时冲浪stackoverflow和谷歌搜索,但到目前为止,我没有拿出任何东西。是因为test_analyzer.py在它自己的子模块中吗?

感谢~~~

2 个答案:

答案 0 :(得分:0)

不要使用powershell来创建python正在读取的文件。使用Vim来创建__init__.py文件。谢谢评论者。

答案 1 :(得分:0)

我对pytest有类似的问题。

在我的情况下,问题出在__init__.py中:该文件是以UTF-16编码创建的。我将编码更改为UTF-8,问题消失了。