gpt4 book ai didi

python - Python 3 中导入错误,但适用于 Python 2

转载 作者:行者123 更新时间:2023-12-01 03:29:38 26 4
gpt4 key购买 nike

我想使用 Python v3.5.2,但我的笔记本电脑还安装了 Python 2.7.10(它是 MacBook)。我有一个简单的 Python 项目结构,如下所示。请注意,由于我使用 IntelliJ 作为 IDE,可能会显示一些工件(例如 *.pyc 文件和 *.iml 文件)。

.├── io│   ├── __init__.py│   ├── __init__.pyc│   ├── __pycache__│   │   └── __init__.cpython-35.pyc│   └── me│       ├── __init__.py│       ├── __init__.pyc│       └── model│           ├── __init__.py│           ├── __init__.pyc│           ├── car.py│           └── car.pyc├── start.py└── test-python.iml

My start.py script looks like the following.

from io.me.model.car import Car

car = Car("honda", "civic", 2005)
print(car.model)

在终端中,如果我输入 python3 start.py 则会收到以下错误。

Traceback (most recent call last):  File "start.py", line 1, in     from io.me.model.car import CarImportError: No module named 'io.me'; 'io' is not a package

但是,我决定输入 python start.py 并且实际上得到了输出:civic

关于我在这里做错了什么有什么想法吗?

此外,是否有关于 Python 项目结构的指南?来自 Java 世界,我想知道是否有推荐的最佳实践或高度固执的方法来处理 Python 项目的结构(例如,像典型的 Java Maven 项目)。

  • 我的资源应该放在哪里?
  • 我应该把测试放在哪里?
  • 是否有适用于 Python 的构建工具(例如 Maven for Java)可以促进和指导目录结构?

最佳答案

Python中有一个名为io的内置模块。还要在文件夹io所在的目录中添加__init__.py

Python2 中的输出

>>>
>>> import io
>>>
>>>
>>> dir(io)
['BlockingIOError', 'BufferedIOBase', 'BufferedRWPair', 'BufferedRandom', 'BufferedReader', 'BufferedWriter', 'BytesIO', 'DEFAULT_BUFFER_SIZE', 'FileIO', 'IOBase', 'IncrementalNewlineDecoder', 'OpenWrapper', 'RawIOBase', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'StringIO', 'TextIOBase', 'TextIOWrapper', 'UnsupportedOperation', '__all__', '__author__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '_io', 'abc', 'open']
>>>

Python3 中的输出

Python 3.4.5 (default, Oct 10 2016, 14:41:48)
[GCC 5.4.0] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import io
>>>
>>> dir(io)
['BlockingIOError', 'BufferedIOBase', 'BufferedRWPair', 'BufferedRandom', 'BufferedReader', 'BufferedWriter', 'BytesIO', 'DEFAULT_BUFFER_SIZE', 'FileIO', 'IOBase', 'IncrementalNewlineDecoder', 'OpenWrapper', 'RawIOBase', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'StringIO', 'TextIOBase', 'TextIOWrapper', 'UnsupportedOperation', '__all__', '__author__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_io', 'abc', 'open']
>>>

将您的 io 包重命名为其他名称。

关于python - Python 3 中导入错误,但适用于 Python 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41072051/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com