标签: python-import

Pytest 模块未找到错误

即使我使用 Python 工作这么久,我仍然偶尔会遇到包结构的问题。

我试图$ pipenv run pytest从下面的目录结构的根目录运行(即..上面的 src/)

src/
   physics/
      __init__.py
      pathing.py
   road/
      tests/
          __init__.py
          test_traffic.py
      __init__.py
      traffic.py
   __init__.py
   main.py
Run Code Online (Sandbox Code Playgroud)

交通.py:


    from physics import pathing

    class Intersection():
        ...

    class Vehicle():
        ...

Run Code Online (Sandbox Code Playgroud)

测试流量.py


    from src.road.traffic import Intersection, Vehicle

    def test_intersection():
        ...

Run Code Online (Sandbox Code Playgroud)

然而,我受到以下打击:

======================================================================= ERRORS ========================================================================
___________________________________________________ ERROR collecting src/road/tests/test_traffic.py ___________________________________________________
ImportError while importing test module '/Users/justian/scripts/py-traffic-sim/src/road/tests/test_traffic.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
src/road/tests/test_traffic.py:1: in <module>
    from src.road.traffic import Intersection, Vehicle
src/road/traffic.py:13: in …
Run Code Online (Sandbox Code Playgroud)

python module python-import pytest python-3.x

2
推荐指数
1
解决办法
2527
查看次数

从当前工作目录上方的目录导入模块

首先,stackoverflow 上有很多关于此问题的解决方案,但从我尝试过的解决方案来看,它们都不起作用。我正在远程机器(linux)上工作。我dir-2/module_2.py使用 ipython 解释器在文件中进行原型设计。另外,我试图避免使用绝对路径,因为该远程计算机中的绝对路径又长又难看,并且我希望我的代码在下载后在其他计算机上运行。

我的目录结构如下:

/project-dir/
            -/dir-1/
                  -/__ init__.py
                  -/module_1.py
            -/dir-2/
                  -/__ init__.py
                  -/module_2.py
                  -/module_3.py
Run Code Online (Sandbox Code Playgroud)

现在我想module_1从导入module_2。然而,这个 stackoverflow 帖子中提到的解决方案:使用链接

sys.path.append('../..')
import module_2
Run Code Online (Sandbox Code Playgroud)

不起作用。我收到错误:ModuleNotFoundError: No module named 'module_1'

此外,在 ipython 解释器中,会import .module_3抛出module_2错误:

import .module_3
       ^ SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

点运算符不是应该在同一目录中工作吗?总的来说,我对导入机制很困惑。非常感谢对最初问题的任何帮助!多谢!

python import python-import

2
推荐指数
1
解决办法
4130
查看次数

为什么Python只导入一次?

我正在查看importPython 中的语句,并了解到 Python 遵循“仅导入一次”规则。

这意味着给定文件中引用同一模块的两个导入语句不会重新导入该模块。

我只是想知道,Python 使用这个规则的原因到底是什么?它是如何让 Python 程序变得更加高效的呢?

归根结底,如果程序员两次导入同一个模块,他就要为低效率负责(如果造成任何低效率)。两次导入如何导致效率低下?

python import module python-import

2
推荐指数
1
解决办法
2454
查看次数

pip 如何告诉 Python 如何导入 C 扩展

sysv_ipc我希望以便携的方式使用该库。

我安装了它:

pip3 install sysv_ipc

然后从Python:

import sysv_ipc
sysv_ipc.__file__

# Output:
# /home/x/.local/lib/python3.9/site-packages/sysv_ipc.cpython-39-x86_64-linux-gnu.so
Run Code Online (Sandbox Code Playgroud)

如果我将该文件复制到文件夹(pip uninstall库),然后从该文件夹打开 python 并尝试相同的导入,则会失败。

我尝试检查还安装了哪些内容,结果发现:

/home/x/.local/lib/python3.9/site-packages/sysv_ipc-1.1.0.dist-info
/home/x/.local/lib/python3.9/site-packages/sysv_ipc.cpython-39-x86_64-linux-gnu.so
/home/x/.local/lib/python3.9/site-packages/sysv_ipc-1.1.0.dist-info/INSTALLER
/home/x/.local/lib/python3.9/site-packages/sysv_ipc-1.1.0.dist-info/LICENSE
/home/x/.local/lib/python3.9/site-packages/sysv_ipc-1.1.0.dist-info/METADATA
/home/x/.local/lib/python3.9/site-packages/sysv_ipc-1.1.0.dist-info/RECORD
/home/x/.local/lib/python3.9/site-packages/sysv_ipc-1.1.0.dist-info/REQUESTED
/home/x/.local/lib/python3.9/site-packages/sysv_ipc-1.1.0.dist-info/WHEEL
/home/x/.local/lib/python3.9/site-packages/sysv_ipc-1.1.0.dist-info/top_level.txt
Run Code Online (Sandbox Code Playgroud)

我也没有在setup.py中找到线索。

我想弄清楚的是——

sysv_ipcpip 如何/在哪里与要从该特定文件导入的Python 相关?

pip python-c-api python-import python-3.x python-internals

2
推荐指数
1
解决办法
885
查看次数

数据框的魔法存储命令如何工作?

我分别在两个 jupyter 笔记本(N1 和 N2)中创建了两个数据帧(df1 和 df2)。

第一天,我使用下面的 store 命令在jupyter 笔记本中使用df1及其变量N2

%store -r df1
Run Code Online (Sandbox Code Playgroud)

但在第 25 天,我创建了一个新的 jupyter 笔记本N3并再次使用以下存储命令

%store -r df1
Run Code Online (Sandbox Code Playgroud)

而且它似乎很容易将数据帧的所有细节轻松地拉入jupyter笔记本df1中?N3

这是如何运作的?

它们不是仅对特定的 jupyter 笔记本会话有效吗?

那么我们是否可以只执行存储命令并随时轻松存储/检索它们,而不是将所有数据帧存储为文件?

python python-import dataframe pandas jupyter-notebook

2
推荐指数
1
解决办法
2563
查看次数

2
推荐指数
1
解决办法
139
查看次数

PYTHON 文件更新在 VCSCODE 中导入时未反映

我有2个文件。一个名为 add_numbers.py。在那里我有以下代码:

def increase_number(num):
  return num +10
Run Code Online (Sandbox Code Playgroud)

然后我有第二个文件,即我的主文件,我在其中导入函数,如下所示:

from add_numbers import increase_number

increase_number(3) 
Run Code Online (Sandbox Code Playgroud)

当我更新的时候add_numbers.py时,也就是说,return num + 20 然后保存它,这些更改不会显示在主文件中,即它仍然使用旧值 10 并返回 13 而不是返回 23..除非我关闭并重新打开 vscode

有什么建议么?vscode 可能有 bug 或者我如何导入该函数?

编辑

我正在使用 ipykernel,更新似乎在重新启动内核后反映出来

python import python-import visual-studio-code

2
推荐指数
1
解决办法
1549
查看次数

PyPI - 允许使用不同名称导入模块

我最近创建了一个简单的 python 包/库并将其上传到(PyPI)。没关系 - 我可以将我的项目上传到 pypi 并使用 pip 再次下载它,但我无法导入它,因为它包含一个句号. 我的包被调用dcode.py(这显然会导致导入问题),我想只需键入import dcode(不带)即可导入它.py。我已经四处寻找解决方案,但似乎找不到 - 我希望能够使用别名 ( dcode) 导入它,而不是dcode.py(这显然不起作用)。有没有办法做到这一点?我假设必须有(例如,两个包discord.pypy-cord都可以使用 导入import discord。有谁知道如何做到这一点?

以防万一您需要它,我的pyproject.toml文件如下所示:

[project]
name = "dcode.py"
version = "0.0.2"
authors = [
{ name = "Dylan Rogers", email = "opendylan@proton.me" },
]
description = "dcode - the Python package for everything"
readme = "README.md"
requires-python = ">=2.0"
classifiers = [
    "Programming Language :: …
Run Code Online (Sandbox Code Playgroud)

python pip python-import pypi python-packaging

2
推荐指数
1
解决办法
793
查看次数

python中的import语句列表

我想根据python中的变量值调用不同的导入.

通常我可以使用switch语句执行此操作,但是alas python没有...

我正在考虑有一个函数列表,每个函数都包含不同的导入,但是有更好的方法吗?是否可以以与方法类似的方式列出导入?或者将模块名称作为字符串存储在列表中,然后将它们转换为可用于导入它们的表单?

谢谢

python switch-statement python-import

1
推荐指数
1
解决办法
189
查看次数

这个介绍Flask代码怎么回事?

这是Flask mega-tutorial的开场代码.

让我们首先为我们的应用程序包创建一个简单的init脚本(文件app/init .py):

from flask import Flask

app = Flask(__name__)
from app import views
Run Code Online (Sandbox Code Playgroud)

上面的脚本只是创建了应用程序对象(Flask类),然后导入了我们尚未编写的views模块.

我不确定这里发生了什么.如果app是一个类的实例,我们如何使用import它?这条线from app import views对我来说毫无意义.有人可以帮我理解这里发生的事情吗?为什么我们需要实例化一个类才能导入一些东西?

python python-import flask

1
推荐指数
1
解决办法
63
查看次数