我使用 Visual Studio Code 已有几年了,我发现它是一个非常好的 IDE。我用 Python 编程的次数比任何其他语言都多。
令我困扰的是我没有抽出时间使用 IDE 的调试器(尽管它是一个功能)。
按调试播放按钮时出错:
Failed to launch the Python Process, please validate the path 'export PATH=$PATH:/Library/Frameworks/Python.framework/Versions/2.7/bin/python'
Run Code Online (Sandbox Code Playgroud)
检查我的 PYTHONPATH:
我的launch.json文件:
"configurations": [
{
"name": "Python",
"type": "python",
"request": "launch",
"stopOnEntry": true,
"pythonPath": "${config:python.pythonPath}",
"program": "${file}",
"cwd": "/workspace/h5-automation/",
"env": {},
"envFile": "${workspaceRoot}/.env",
"debugOptions": [
"WaitOnAbnormalExit",
"WaitOnNormalExit",
"RedirectOutput"
]
}
Run Code Online (Sandbox Code Playgroud)
有什么想法/建议吗?
为什么setuptools/easy_install .pth文件不适合PYTHONPATH,如何让它们很好地播放,并在sys.path中的那些.pth推送之前将目录保存在我的PYTHONPATH中?
我目前的问题是我为我们的项目创建了一个包,PyYAML和PyCrypto都是需求.
install_requires=["PyYAML",
"pycrypto >= 2.3"]
Run Code Online (Sandbox Code Playgroud)
正如我们一直在开发的那样,我们已经使用pip在标准目录(/usr/lib64/python2.6/site-packages)中安装了PyYaml.我们在那里安装了旧版本的PyCrypto,然后发现我们需要更新的版本,我们在/opt/devtools/lib64/python2.6/site-packages下安装了它.在/ usr/lib64之前,我们已经将我们的PYTHONPATH设置为首先从/ opt读取.这一切在开发中都很好.当我们运行时,我们从/ opt获得PyCrypto 2.3,从/ usr/lib64 /获得PyYaml ....
但现在,当我尝试在virtualenv中安装时,当我运行时python setup.py develop,setuptools/distribute最终将/usr/lib64/python2.6/site-packages添加到easy-install.pth,但不是/ opt/devtools /lib64/python2.6/site-packages.它正在找到正确的版本,如输出中所示:
Using /home/s3447/projects/wsrs.git/emp_parsing
Searching for pycrypto==2.3
Best match: pycrypto 2.3
Adding pycrypto 2.3 to easy-install.pth file
Using /opt/wsrs-devtools/stow/pycrypto-2.3/lib64/python2.6/site-packages
Searching for PyYAML==3.10
Best match: PyYAML 3.10
Adding PyYAML 3.10 to easy-install.pth file
Run Code Online (Sandbox Code Playgroud)
但是不要在easy-install.pth中添加/ opt/.... (只有/ usr/lib64 ...并且我运行setup.py的目录被添加到路径中.)
最终的结果是,虽然我的setuptools认为它是成功的,但是当我运行我的代码时,easy-install.pth决定它比我更了解我想要的东西,在我的PYTHONPATH之前插入自己,我最终导入了错误的版本PyCrypto.
两个问题:
为什么setuptools与它添加到.pth文件的目录不一致?我希望安装两个目录或两个目录.
有没有办法让setuptools不试图覆盖我的PYTHONPATH?为什么这首先被认为是一个好主意?
我安装了EPD 7.3.1(现在称为Enthought Canopy),它带有scikit-learn v 0.11.我正在运行Ubuntu 12.04.我需要安装v 0.12的scikit-learn.
scikit-learn doc说克隆存储库,将scikit-learn目录添加到PYTHONPATH,然后构建扩展:python setup.py build_ext --inplace
问题是EPD是它自己封闭的世界(有多个scikit dirs):
./lib/python2.7/site-packages/scikits/
./lib/python2.7/site-packages/sklearn
然后是:
./EGG-INFO/scikit_learn/
我真的不想尝试,因为花了很长时间才把事情调到这一点.在这种情况下,我应该遵循scikit-learn的指示吗?
当导入非内置模块时,解释器将搜索给定的位置sys.path.sys.path从这些位置初始化(http://docs.python.org/library/sys.html#sys.path):
虽然前两个来源是直截了当的,但任何人都可以解释第三个如何运作,以及影响它的可能性有多大?
虽然我对一般解决方案感兴趣,但我的具体问题是:
/Library/Python/2.7/,这是superpack安装它们的地方,而不是来自enthought网站包.wxPython与创建的应用程序py2app -A不具有相同的sys.path开始与应用程序时为python start_app.py. 我有一组必须动态修改 os.sys.path 的脚本。然后脚本启动一个子流程。理想情况下,子进程将与调用者具有相同的 os.sys.path。我想避免将它作为参数传递,因为这需要修改子流程脚本。
我有可以工作并满足我所有需求的代码。我想知道是否有更好的方法来做到这一点,以及这种方法是否存在任何缺陷。
主要流程
import os
import sys
import subprocess
#append a dir thats not on the sys path
sys.path.append('C:/pytest2/')
#convert the sys.path into env variable format
pypath = ''
for d in sys.path:
pypath = pypath + d + ';'
#create a temp copy of the env variables
myenv = os.environ.copy()
#set PYTHONPATH to match this scripts sys.path
myenv['PYTHONPATH'] = pypath
#setup a python command to echo the sys.path
command = 'python C:/pytest/test_subprocess.py'
#launch the subprocess with …Run Code Online (Sandbox Code Playgroud) 要指定的Java类路径中,我使用-cp或-classpath选项java。Python 中的等效选项是什么?
我知道我可以设置 OS 变量,PYTHONPATH但不应该有一个PYTHONPATH来统治它们。
我有时在 Eclipse 中使用 PyDev。它可以处理多个源目录。如何?
我经常有多个源目录。有时我将生产和测试代码分开。有时我有一个带有一些 Python 包的 Git 子模块。
当我这样做时,echo $PYTHONPATH 它不会返回任何东西.空行.
那是什么意思呢.我使用python,它的工作正常..所以什么是pythonpath的使用,这应该是在ubuntu 13.04的价值
/usr/bin/
要么
/usr/lib/
..或者是其他东西
在windows中我们有python27/source目录,我可以把外部源/驱动程序放在ubuntu中(或等效).
当我这样做user@user$ dpkg -L python2.7时显示
/.
/usr
/usr/lib
/usr/lib/python2.7
/usr/lib/python2.7/lib-dynload
/usr/lib/python2.7/lib2to3
/usr/lib/python2.7/lib2to3/fixer_util.py
....
/usr/lib/python2.7/lib2to3/Grammar.txt
/usr/share
/usr/share/doc
/usr/share/doc/python2.7
/usr/share/doc/python2.7/NEWS.gz
/usr/share/doc/python2.7/README.Debian
/usr/share/doc/python2.7/ACKS.gz
/usr/share/doc/python2.7/README.gz
/usr/share/doc/python2.7/copyright
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/python2.7
/usr/share/applications
/usr/share/applications/python2.7.desktop
/usr/share/menu
/usr/share/menu/python2.7
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/2to3-2.7.1.gz
/usr/share/man/man1/pdb2.7.1.gz
/usr/share/man/man1/pygettext2.7.1.gz
/usr/share/man/man1/pydoc2.7.1.gz
/usr/share/pixmaps
/usr/share/pixmaps/python2.7.xpm
/usr/bin
/usr/bin/2to3-2.7
/usr/bin/pygettext2.7
/usr/bin/pydoc2.7
/usr/share/doc/python2.7/changelog.gz
/usr/share/doc/python2.7/changelog.Debian.gz
/usr/bin/pdb2.7
Run Code Online (Sandbox Code Playgroud)
我已经从这个站点下载了chrome驱动程序并放入了给定的目录/usr/bin..但它不能正常工作.我应该把它放在哪里?
https://code.google.com/p/selenium/wiki/ChromeDriver
ubuntu pythonpath python-2.7 robotframework selenium-webdriver
我对 python 不太了解,但想在我没有 sudo 访问权限的服务器上的本地目录中安装一些 python 模块。
我首先进入所需的目录(不是根目录)并创建存储自定义模块所需的目录树
cd /root/example/sub-example
mkdir -p local/lib/python2.7/site-packages
Run Code Online (Sandbox Code Playgroud)
然后我将此本地路径导出到PYTHONPATH
export PYTHONPATH=$PYTHONPATH:/root/example/sub-example/local/lib/python2.7/site-packages
Run Code Online (Sandbox Code Playgroud)
然后我创建一个新的子目录来存储 python 包,同时解压
mkdir example-python-directory
cd example-python-directory
wget http://example-python-package
tar -xvf example-python-package.tar.gz
cd example-python-package
Run Code Online (Sandbox Code Playgroud)
最后,我运行带有该--user标志的 setup.py 脚本,尝试将其安装在我指定的/local目录中
python setup.py install --user
Run Code Online (Sandbox Code Playgroud)
问题是,我的/root/example/sub-example/local/lib/python2.7/site-packages目录中没有安装任何内容,而是我发现现在根目录中有一个新目录:/root/.local/lib/python2.7/site-packages
有办法防止这种情况吗?我觉得我缺乏 Python 知识导致我犯了一些对其他人来说可能很明显的愚蠢错误。谢谢您的帮助!
我在想像
python3 my_script.py --pythonpath /path/to/some/necessary/modules
有这样的吗?我知道(我认为)PycharmPYTHONPATH在您使用它执行脚本时会临时修改;Pycharm 是如何做到的?
我想这样做的原因是我有一些代码通常需要在我自己的机器上运行(这很好,因为我使用 Pycharm 来运行它)但有时需要在远程服务器上运行(在命令行上),并且它不起作用,因为远程服务器没有PYTHONPATHPycharm 临时自动添加的s。我不想这样做,export PYTHONPATH=[...]因为经常更改它很麻烦(并且假设它确实需要经常更改)。
我有一个相当大的 python/c++ 程序,运行如下:
set_env.sh 脚本修改 PYTHONPATH 并执行所有类型的导出以指向正确的 C++ 程序。在终端中运行这两个命令时,效果很好,但是,使用调试器会破坏这一切。
我尝试在 preLaunchTask 中运行“.set_env.sh -option A -option B”,但调试器似乎看不到新的 PYTHONPATH。
如何使调试器运行 set_env 并考虑新的 PYTHONPATH ?
debugging pythonpath visual-studio-debugging visual-studio-code
pythonpath ×10
python ×8
canopy ×1
debugging ×1
enthought ×1
linux ×1
macos ×1
module ×1
organization ×1
pycharm ×1
python-2.7 ×1
scikit-learn ×1
setuptools ×1
subprocess ×1
sys.path ×1
ubuntu ×1