我感觉被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世界项目
我被打败了,不知道现在该怎么办。为什么会这样?
TLDR;
为了避免摆弄< 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)
如果您只需要hello_world_main.py
中的特定函数,您的导入语句应该是fromcore.hello_world_main导入hello_world_main
,如果您想要文件中的所有内容,请尝试fromcore.hello_world_main导入*
。
解决方案一:
导出 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的重试包,可以用来自动重试一些可能运行