这似乎是一个新手问题,但事实并非如此.一些常见的方法并不适用于所有情况:
这意味着使用path = os.path.abspath(os.path.dirname(sys.argv[0])),但如果您从另一个目录中的另一个Python脚本运行,这不起作用,这可能发生在现实生活中.
这意味着使用path = os.path.abspath(os.path.dirname(__file__)),但我发现这不起作用:
py2exe没有__file__属性,但有一个解决方法execute()没有__file__属性NameError: global name '__file__' is not defined回答不完整的相关问题:
我正在寻找一个通用的解决方案,一个适用于所有上述用例的解决方案.
这是测试用例的结果:
a.py: __file__= a.py
a.py: os.getcwd()= C:\zzz
b.py: sys.argv[0]= a.py
b.py: __file__= a.py
b.py: os.getcwd()= C:\zzz
Run Code Online (Sandbox Code Playgroud)
#! /usr/bin/env python
import os, sys
print "a.py: sys.argv[0]=", sys.argv[0]
print "a.py: __file__=", __file__
print …Run Code Online (Sandbox Code Playgroud) 我想使用virtualenv的默认(没有站点包).
但是有些模块很难安装在virtualenv中(例如gtk)."困难"我的意思是你需要安装很多c-header文件,需要编译很多东西.
我知道我可以通过不使用pip安装这些软件包来解决这个问题,而是创建符号链接以使全局site-packages目录中的某些模块可用.
但这是正确的方向吗?
有没有办法用pip或virtualenv创建符号链接?
在2013年,我想要一些像psycopg2,gtk,python-ldap等模块,这些模块通过virtualenv中的rpm/dpkg安装在我的linux服务器上.
符号化或其他解决方法确实使事情变得更复杂,而不是更简单.我们今天使用这个选项(2017)
--system-site-packages中
授予虚拟环境访问全局站点包的权限.