当前位置: 首页 > 知识库问答 >
问题:

尝试所有解决方案后在python中导入错误

赏阳嘉
2023-03-14

我感觉被Python打败了,以至于我不确定还能尝试什么。我正在运行 Python 3.9,我只是无法在我的生命中让导入正常工作。这是我的目录结构:

hello-world-proj
|
|.. core
   |
   |..
       __init__.py
       hello_world_main.py
|
|.. test
   |
   |..
       __init__.py
       test_hello_world_main.py

hello世界主.py

def hello_world_main():
   return "myString"

if __name__ == "__main__":
   print(hello_world_main()) # call hello_world_main()

测试hello_world_main.py

import unittest
import os
from core import hello_world_main

class HelloWorldTest(unittest.TestCase):
   self.assertEquals(hello_world_main(), "myString")

if __name__ == '__main__':
    unittest.main(exit=False)

当我运行< code > python test _ hello _ world _ main . py 时,我遇到了错误:

ImportError:无法导入名称hello_world_main

我已经完成了导出PYTHONPATH=$PYTHOPATH:/path/to/hello世界项目

我被打败了,不知道现在该怎么办。为什么会这样?

共有3个答案

程天佑
2023-03-14

TLDR;

    < li >添加setup.py < li >使用:pip install -e安装您的软件包。

为了避免摆弄< code>import参数,我将在您的顶层目录(hello-world-proj)中创建一个< code>setup.py(您可能已经有/需要一个了)。

setup.py

from setuptools import setup, find_packages

setup(name="hello-world-proj", packages=find_packages())

然后,在项目根目录中,通过以下符号链接安装项目(最好在虚拟环境中):

pip install -e .

请注意,您不必在每次更改文件后都这样做——只需一次。在这个回答中阅读更多

之后,您可以在测试文件中使用来自核心导入hello_world_main的当前

import unittest
from core import hello_world_main

class HelloWorldTest(unittest.TestCase):

    def test_hello_world(self):
        self.assertEqual(hello_world_main.hello_world_main(), "myString")

if __name__ == '__main__':
    unittest.main(exit=False)

孙泳
2023-03-14

如果您只需要hello_world_main.py中的特定函数,您的导入语句应该是fromcore.hello_world_main导入hello_world_main,如果您想要文件中的所有内容,请尝试fromcore.hello_world_main导入*

况景龙
2023-03-14

解决方案一:

导出 PYTHONPATH=$PYTHONPATH:/path/to/hello-world-proj 后,编辑核心中的__init__.py,如下所示:

from .hello_world_main import hello_world_main

解决方案二:

从同一目录运行您的测试并编辑测试文件,如下所示:

import unittest
import os
from core.hello_world_main import hello_world_main

class HelloWorldTest(unittest.TestCase):
   self.assertEquals(hello_world_main(), "myString")

if __name__ == '__main__':
    unittest.main(exit=False)

并在< code>hello-world-proj中运行您的命令:

python test/test_hello_world_main.py
 类似资料:
  • 问题内容: 我尝试使用以下方法为32位Python安装Scrapy for Python 2.7.8(anaconda 2.1.0) 我得到这个错误 这是错误,在错误的上方和下方都有几行: 我同时拥有Microsoft Visual Studio 12.0和适用于Python 2.7的Microsoft Visual C ++编译器程序包,两者均具有vcvarsall.bat文件。 我有一个名为“

  • 在我的大数据项目中,我必须开发一个JSOUP脚本来获取巴黎2018年气象数据并存储它们 我尝试了user\u Agent的所有解决方案,但都有相同的错误(URL在浏览器上工作) 错误显示在第8天,这样他可以在8次请求后检测到这是一个机器人。

  • Import geopandas给了我:ImportError:我没有研究和应用名为“geopandas”的模块解决方案: !卸载geopandas六pyproj菲奥娜rtree匀称-y!康达安装-c康达锻造菲奥娜匀称的rtree pyproj geopandas六!Conda升级--所有 升级操作产生了一个正在更新和替换的文件的大胆列表。它以以下消息结束了8次,每次都有不同的路径: CondaV

  • 我知道这个问题以前被问过很多次,但我确实试过了所有的方法,但我仍然犯了这个错误。 我试图通过索引中的ajax获取json数据。php文件。我正在ubuntu服务器上通过apache2运行我的网站。我不知道从这里到哪里去。 精确误差: 我尝试的:-将此添加到/etc/apache2/apache2。conf文件 -将其添加到每个<代码> -将此添加到我的index.php文件: -将“json”更改

  • 每次我从visual studio 2017打开数据库,然后尝试重建windows窗体的解决方案时,我都会遇到这些错误: 严重性代码描述项目文件行抑制状态错误MSB3021无法将文件“C:\用户\bruno\文档\Visual Studio 2017\项目\WindowsFormsApp2\WindowsFormsApp2\App_Data\Database.mdf”复制到“bin\Debug\A

  • 本文向大家介绍Python中异常重试的解决方案详解,包括了Python中异常重试的解决方案详解的使用技巧和注意事项,需要的朋友参考一下 前言 大家在做数据抓取的时候,经常遇到由于网络问题导致的程序保存,先前只是记录了错误内容,并对错误内容进行后期处理。 原先的流程: 改进后的流程: 最近发现的新的解决方案:retrying retrying是一个 Python的重试包,可以用来自动重试一些可能运行