可能重复:
Python使用什么IDE?
我是python的新手,我在linux机器上使用简单的gedit应用程序来编写python代码,但是很难管理我代码的缩进.我正在寻找提供某些功能的任何Python IDE,不应该减慢我的P4机器.
我正在使用最新版本的Xcode 4开发Cocoa应用程序,我想将动态库链接到我的项目(dylibs).
我读的地方,在我的项目库添加是不够的,因为我有运行install_name_tool,并otool让我的项目中使用我的项目被捆绑的库.
我已经阅读了手册页install_name_tool,但我不明白为什么我必须这样做.
图书馆如何运作?特别感兴趣的是应用程序和库具有指向我机器中特定位置的路径的部分,例如/usr/local/lib/mylibrary.dylib运行时otool -L
我试图在一个(最终多平台)C++应用程序中嵌入Python.
重要的是我的应用程序包含自己的Python实现(与blender一样),因此它完全是自包含的.(否则它将成为配置雷区).
我有两个选择:
(2)需要什么?
有了这些信息,我就可以平衡每种方法的优点与设置它所需的工作量.
我的嵌入式Python将供我自己使用(而不是任何用户区脚本) - 主要是控制流/游戏逻辑.我将需要很少的标准库 - 也许我可以通过在必要时隧道回C++将其降低到0 - 例如,如果我需要一个随机数,我可以创建一个C++例程并从Python访问它.我已经涵盖了所有这些.
然而,它开始看起来好像即使最小的安装也必须包含一些stdlib组件,这提示了一个问题:"如果我必须包含一些,也许最好包括所有!"
这是一个CPython程序,试图用空的初始化解释器sys.path:
#include <Python.h>
int main(int argc, char** argv)
{
wchar_t* program = NULL;
wchar_t* sys_path = NULL;
Py_NoSiteFlag = 1;
program = Py_DecodeLocale(argv[0], NULL);
Py_SetProgramName(program);
sys_path = Py_DecodeLocale("", NULL);
Py_SetPath(sys_path);
Py_Initialize();
PyMem_RawFree(program);
PyMem_RawFree(sys_path);
Py_Finalize();
}
Run Code Online (Sandbox Code Playgroud)
执行上述程序会引发以下错误:
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'
Current thread 0x00007ffff7fc6700 (most recent call first):
Signal: SIGABRT (Aborted)
Run Code Online (Sandbox Code Playgroud)
那么除了encodings包之外,Python 3.5标准库中的哪些包和模块是运行Python 3.5解释器所必需的?在我的文档中似乎没有这些信息.
python python-embedding python-3.x python-internals python-3.5
是否可以在没有标准库的情况下嵌入python?
我正在使用python 2.7.6的cmake构建,我已经运行了一个基本的嵌入式脚本,如下所示:
#include <stdio.h>
#include <Python.h>
int main(int argc, char *argv[]) {
/* Setup */
Py_SetProgramName(argv[0]);
Py_Initialize();
/* Run the 'main' module */
int rtn = Py_Main(argc, _argv);
Py_Finalize();
return rtn;
}
Run Code Online (Sandbox Code Playgroud)
..但是当我运行它时,我得到:
ImportError: No module named site
Run Code Online (Sandbox Code Playgroud)
如果我设置了正确的$ PYTHONHOME,它可以正常工作; 但这不是我想要做的.我试图在没有标准库的独立应用程序中嵌入python的副本.
我很欣赏它的使用,但对于这个特定的嵌入式环境,我想要更像lua的东西(但显然有python语法),其中只有父应用程序公开的特定库可用.
这还有一个额外的好处,即不关心分发(或构建)标准库及其所有交叉链接的动态库.
这有可能吗?或者我不可避免地会发现缺少语言的基本块,如sys.path,import,{},[]或类似标准库的一部分?
如果有可能,你会怎么做呢?