相关疑难解决方法(0)

如何在Python中获取当前执行文件的路径?

这似乎是一个新手问题,但事实并非如此.一些常见的方法并不适用于所有情况:

sys.argv中[0]

这意味着使用path = os.path.abspath(os.path.dirname(sys.argv[0])),但如果您从另一个目录中的另一个Python脚本运行,这不起作用,这可能发生在现实生活中.

__文件__

这意味着使用path = os.path.abspath(os.path.dirname(__file__)),但我发现这不起作用:

  • py2exe没有__file__属性,但有一个解决方法
  • 从IDLE运行时execute()没有__file__属性
  • OS X 10.6我得到的地方 NameError: global name '__file__' is not defined

回答不完整的相关问题:

我正在寻找一个通用的解决方案,一个适用于所有上述用例的解决方案.

更新

这是测试用例的结果:

输出python a.py(在Windows上)

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)

a.py

#! /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)

python directory path

183
推荐指数
8
解决办法
12万
查看次数

从virtualenv中提供的全球网站包中制作一些模块

我想使用virtualenv的默认(没有站点包).

但是有些模块很难安装在virtualenv中(例如gtk)."困难"我的意思是你需要安装很多c-header文件,需要编译很多东西.

我知道我可以通过不使用pip安装这些软件包来解决这个问题,而是创建符号链接以使全局site-packages目录中的某些模块可用.

但这是正确的方向吗?

有没有办法用pip或virtualenv创建符号链接?

更新

在2013年,我想要一些像psycopg2,gtk,python-ldap等模块,这些模块通过virtualenv中的rpm/dpkg安装在我的linux服务器上.

符号化或其他解决方法确实使事情变得更复杂,而不是更简单.我们今天使用这个选项(2017)

--system-site-packages中

授予虚拟环境访问全局站点包的权限.

python virtualenv

7
推荐指数
1
解决办法
927
查看次数

标签 统计

python ×2

directory ×1

path ×1

virtualenv ×1