我想改变在Linux下的Python2.7上加载模块/库的方式。我试图从配置文件中更改它。在那之前,就像:
BINLIBDEST= $(LIBDIR)/python$(VERSION) LIBDEST= $(SCRIPTDIR)/python$(VERSION) INCLUDEPY= $(INCLUDEDIR)/python$(VERSION) CONFINCLUDEPY= $(CONFINCLUDEDIR)/python$(VERSION) LIBP= $(LIBDIR)/python$(VERSION)
我试着把它改成这样:
BINLIBDEST= $(LIBDIR) LIBDEST= $(SCRIPTDIR) INCLUDEPY= $(INCLUDEDIR) CONFINCLUDEPY= $(CONFINCLUDEDIR) LIBP= $(LIBDIR)
主要是从路径名中删除python%(VERSION),这样它就可以只从lib文件夹加载模块,而不是lib/python27。但是,即使启动make和make install能够处理这些更改,python27或python27二进制文件也不会从新路径加载模块。它会随着以下输出返回:
Could not find platform independent libraries <prefix> Could not find platform dependent libraries <exec_prefix> Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>] 'import site' failed; use -v for traceback
是否有办法强制Python二进制文件本身(如果必须)从我设置的新路径加载模块,而不是默认路径“$(LIBDIR)/Python$(VERSION)”?在
您将不得不对python源代码做一些更改并重新编译,但我将假设这是可以的,因为这是一个非常非标准的事情。在
查看文件
Modules/getpath.c
。python确定libdir的步骤在文件开头的注释中有详细说明。你可以看看svn回购here。我想你应该看看这个定义是如何使用的:我不认为把它改成
[...] PREFIX "/lib/:" [...]
那么容易,但它会沿着这些思路来做。在你是想完成virtualenv做不到的事情吗?在
它似乎符合您的要求:
我要感谢carlpett:我能够在运行时设置python搜索路径:从lib/更改为lib/,同时使用gcc5.1构建python 2.7.10,方法是修改Modules/getpath.c。在
作为记录,我在配置时尝试了libdir(适用于共享库,但不适用于python模块的安装路径)、修改Makefile、修改pyconfig.h、调整$PYTHONPATH、$PYTHONHOME,什么都不起作用。在
只是一个细节,但是make安装没有正确放置库,所以您必须自己做一点cp-af和mv。在
谢谢CARLPETT!!!
相关问题 更多 >
编程相关推荐