关于Pycharm导入空间包的问题

作者探讨了在PyCharm中如何导入未包含__init__.py的自定义模块,尤其是在移植到不同项目时遇到的问题。通过介绍空间包概念,解释了为什么在没有__init__.py的情况下,代码能在本地运行,但在其他项目中失败。最终解决方案是确保根目录存在并创建适当的初始化文件。
摘要由CSDN通过智能技术生成

使用pycharm导入python自定义模块的时候,我发现一个问题,正常来说使用import导入模块的时候,需要模块包含__init__.py文件,我编写自动化脚本使用po模式,外层的模块并没有加init文件,内层加了,具体结构如下:

可以看到,page和testcase都是以软件包的性式创建的,而final_interface是一个目录,刚开始我并没有在意这点,代码调用如下:

 本地编写以后,我发现是可以正常运行的,但当我把这个final_interface移植到另一个项目中发现,他会报错:

 于是我查阅资料,发现这种方式其实是可以执行的,因为python3.3以后新增了一个叫空间包的概念,查阅资料如下:

 所以我上述所写的from final_interface.page.token import Demo应该是正常调用的,在原来的项目中也是可以正常执行的,那为什么把这个模块copy到另一个项目会报错呢?

我试着加了__init__.py文件,的确可以解决这个问题,还有一种方法就是把调用语句改成:

from page.token import Demo,也就是去掉final_interface。

那我又有疑问了,不是说python3.3以后支持这种写法吗,于是乎我找到了下面大佬写的文章:

 这我就清楚了,应该就是由于移植到了另一个项目中,所以导致final_interface这个模块内的源代码可能没有识别根目录,所以我做了如下操作:

 

 在我所写的final_interface模块上层创建一个目录,并标记为根目录,然后再执行代码,发现执行成功了。

最后总结一下,当自己写代码时,最好选择创建python package,他会自动创建__init__.py文件,也就不会有我遇到的这个问题了。

引用\[1\]:在ROS环境下运行ORB_SLAM,最好将工程放在catkin_ws/src文件夹下: cd ~/catkin_ws/src git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2。\[1\]这样可以确保工程文件正确地放置在ROS工作空间中。 引用\[2\]:在导入ORB_SLAM2到PyCharm之前,需要确保ORB_SLAM2已经成功编译并安装了所需的依赖项。根据引用\[2\]中的描述,编译过程中可能会出现一些错误,例如找不到libDBoW2.so文件。这可能是因为依赖项没有正确地编译或安装导致的。你可以尝试按照错误提示中提到的解决方法,安装相应版本的,如pip install daal==2021.4.0和pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pathlib。这样可以确保所需的依赖项正确安装。 在PyCharm导入ORB_SLAM2时,你可以按照以下步骤进行操作: 1. 打开PyCharm,并创建一个新的Python项目。 2. 在项目文件夹中,创建一个名为ORB_SLAM2的文件夹。 3. 将之前在catkin_ws/src文件夹下克隆的ORB_SLAM2工程文件夹复制到ORB_SLAM2文件夹中。 4. 在PyCharm中打开ORB_SLAM2文件夹。 5. 在PyCharm的项目设置中,将ORB_SLAM2文件夹添加到项目的源代码路径中。 6. 确保你的Python环境中已经安装了ORB_SLAM2所需的依赖项。 7. 现在你可以在PyCharm中使用ORB_SLAM2了,可以导入ORB_SLAM2的模块并开始编写代码。 请注意,以上步骤假设你已经正确地编译和安装了ORB_SLAM2,并且已经解决了任何可能出现的依赖项问题。如果你在导入过程中遇到任何问题,请仔细检查编译和安装过程中的错误信息,并尝试解决这些问题。 #### 引用[.reference_title] - *1* *2* [ORB_SLAM2安装调试过程](https://blog.csdn.net/YiYeZhiNian/article/details/108270337)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Ubuntu20.04配置YOLOV5算法相关环境,并运行融合YOLOV5的ORB-SLAM2开源代码(亲测有效)](https://blog.csdn.net/weixin_70026476/article/details/128184135)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值