我正在尝试运行embedding example并且我无法从当前工作目录加载模块,除非我将其显式添加到sys.path然后它可以工作:

PyRun_SimpleString("import sys");

PyRun_SimpleString("sys.path.append(\".\")");

Python不应该在当前目录中查找模块吗?

Edit1:尝试导入模块:

Py_Initialize();

PyRun_SimpleString("import multiply");

它仍然失败,出现以下错误:

Traceback (most recent call last):

File "", line 1, in

ImportError: No module named multiply

Edit2:从sys.path docs:

If the script directory is not available (e.g. if the interpreter is

invoked interactively or if the script is read from standard input),

path[0] is the empty string, which directs Python to search modules

in the current directory first.

不确定它的含义是不可用的,但如果我打印sys.path [0]它不是空的:

/usr/lib/pymodules/python2.7

解决方法:

您需要调用PySys_SetArgv(int argc,char ** argv,int updatepath)才能使相对导入生效.如果updatepath为0,这将把正在执行的脚本的路径添加到sys.path(有关更多信息,请参阅docs).

以下应该做的伎俩

#include

int

main(int argc, char *argv[])

{

Py_SetProgramName(argv[0]); /* optional but recommended */

Py_Initialize();

PySys_SetArgv(argc, argv); // must call this to get sys.argv and relative imports

PyRun_SimpleString("import os, sys\n"

"print sys.argv, \"\\n\".join(sys.path)\n"

"print os.getcwd()\n"

"import thing\n" // import a relative module

"thing.printer()\n");

Py_Finalize();

return 0;

}

标签:python,linux,python-2-7,python-embedding

来源: https://codeday.me/bug/20190928/1829663.html

python为什么import不了_python – 为什么PyImport_Import无法从当前目录加载模块?相关推荐

  1. python 下载图片到内存卡_python - 获取图像大小而不将图像加载到内存中

    如果您不关心图像内容,PIL可能是一种过度杀伤力. 我建议解析python magic模块的输出: >>> t = magic.from_file('teste.png') > ...

  2. 在python中import什么意思_python的import是什么意思

    python的import是什么意思? __import__() 函数用于动态加载类和函数 . 如果一个模块经常变化就可以使用 __import__() 来动态载入. 推荐:[Python教程] 语法 ...

  3. go加载python_人生苦短我用python(02)动态加载模块-Go语言中文社区

    文章内容为原创,欢迎转载请注明出处 作者: EflyPro->晦明禅师 文章来源:公众号"睿江云计算" 继第一期[人生苦短我用Python系列专栏]发布后,深受广大睿普迷的一 ...

  4. python动态加载模块有什么用_人生苦短我用python(02)动态加载模块

    继第一期[人生苦短我用Python系列专栏]发布后,深受广大睿普迷的一致好评,经常问小普第二期什么时候出呀?好期待~ 来来来小普这就呈上第二期[02动态加载模块] 错过了第一期的小伙伴们可以点此穿越哦 ...

  5. python自带的对称算法_一种基于对称算法和专用加载模块的Python程序模块加密方法...

    一种基于对称算法和专用加载模块的Python程序模块加密方法 [专利说明]一种基于对称算法和专用加载模块的Python程序模块加密方法 技术领域 [0001]本发明涉及一种网络安全技术,具体涉及一种P ...

  6. python from import什么意思_Python 引用From import介绍

    一. 模块的定义与分类 模块是什么? ​ 这几天,我们进入模块的学习.在学习模块之前,我们首先要知道,什么是模块? ​ 一个函数封装一个功能,你使用的软件可能就是由n多个函数组成的(先不考虑面向对象) ...

  7. python没有错误但是不显示结果_为什么我在Python3中加载模块时遇到问题但在Python2中没有加载?...

    根据我使用的 Python安装,我在加载模块时遇到了一些问题.当我输入 from quantecon import approx_markov 在使用Python 3.4.0的终端中,返回以下错误消息 ...

  8. python重新加载模块_jupyter实现重新加载模块

    最近几年,jupyter在全球数据科学领域,已经成为不可或缺的重要工具. 在jupyter中用python写程序,若import了自己写的外部模块,如果这个外部模块有更新,再次执行import,jup ...

  9. Python 重新加载模块

    简述 在进行模块化编程时,经常会遇到这样一种场景: 编写了一个 Python 模块,并用 import my_module 的形式进行导入.当对该模块进行更改后,即使重新导入,其中的任何改变都不会被识 ...

最新文章

  1. 使用OpenVINO加速Pytorch表情识别模型
  2. graphviz画图
  3. jQuery,Ashx发送站内信
  4. python读取data_转载 “ 理想国@Data ”重拾Python(5):数据读取 博客
  5. 从通信到AI FreeSWITCH与WebRTC
  6. vs c语言 多线程demo,一个多线程的Socket通信Demo(C语言实现)
  7. Android 为应用添加默认加载页
  8. iOS网络请求认证挑战
  9. cnpm安装webpack_Webpack(一)介绍
  10. 点击部分刷新html ajax,一文全解web前端精简知识点
  11. Django开发social-auth-app-django 第三方登陆
  12. hihocoder #1617 : 方格取数(dp)
  13. [JS] 001_JavaScript基础增强
  14. 期货突破(期货突破交易法)
  15. 京东整店商品查询API接口(item_search_shop-获得店铺的所有商品API接口)
  16. 2022年系统集成项目管理工程师考试,需要知道这些
  17. 设计程序,判断给定的一个字符是否是英文字母。
  18. zblog php模板标签,Z-BlogPHP主题教程,zblogphp模板模块标签收藏
  19. Failed to resolve directive: XXX
  20. python关于通讯录模型_python写一个通讯录 - wtwexile - 博客园

热门文章

  1. 23模式之: 工厂方法模式demo
  2. Innodb中自增长值的列
  3. java 基础知识-数组的7种算法(排序、求和、最值、遍历...)
  4. 如何建立内核级钩子控制操作系统实现程序隐身
  5. 【JZOJ4811】【NOIP2016提高A组五校联考1】排队
  6. LPC1768之GPIO
  7. 报表中表达式的全局集合(Visual Studio 报表设计器)
  8. 位运算符 | ^ ~的厉害__10进制 To 2进制
  9. python_开发环境介绍_交互模式使用_IDE介绍和使用---python工作笔记010
  10. C++_数据类型_布尔类型_以及数据的输入_以及算术运算符_加减乘除运算---C++语言工作笔记013