我将一个包(称为pysolr 2.0.15)下载到我的计算机上,与Haystack一起使用.说明要求我将pysolr添加到我的PYTHONPATH中.
这到底是什么意思呢?在解压缩pysolr文件之后,我运行了命令python setup.py install,这就是它.我做了什么,我还需要做什么?
谢谢您的帮助!
使用Heroku来部署我们的Django应用程序,除了heroku local:run命令之外,一切似乎都按规范工作.
我们经常需要通过Django的manage.py文件运行命令.在遥控器上运行它们,作为一次性dynos,完美无瑕地工作.要在本地运行它们,我们尝试:
heroku local:run python manage.py the_command
Run Code Online (Sandbox Code Playgroud)
尽管当前虚拟环境包含Django安装,但失败了
ImportError: No module named django.core.management
Run Code Online (Sandbox Code Playgroud)
然后heroku local:run which python返回:
/usr/local/bin/python
Run Code Online (Sandbox Code Playgroud)
而which python回报:
/Users/myusername/MyProject/venv/bin/python #the correct value
Run Code Online (Sandbox Code Playgroud)
heroku local:run使用当前安装的虚拟环境?我有一个Python项目,包括一个Jupyter笔记本,一个bin目录中的几个脚本和一个目录中的模块src,依赖于Pipfile:
myproject
??? myproject.ipynb
??? Pipfile
??? Pipfile.lock
??? bin
? ??? bar.py
? ??? foo.py
??? src
??? baz.py
??? qux.py
Run Code Online (Sandbox Code Playgroud)
脚本foo.py和bar.py使用标准shebang
#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)
并可以运行pipenv shell:
mymachine:myproject myname$ pipenv shell
(myproject-U308romt) bash-3.2$ bin/foo.py
foo
Run Code Online (Sandbox Code Playgroud)
但是,我无法src从脚本中轻松访问模块.如果我加
import src.baz as baz
Run Code Online (Sandbox Code Playgroud)
到foo.py时,我得到:
ModuleNotFoundError: No module named 'src'
Run Code Online (Sandbox Code Playgroud)
我试过的一个解决方案是在下面添加一个.env文件myproject:
PYTHONPATH=${PYTHONPATH}:${PWD}
Run Code Online (Sandbox Code Playgroud)
此作品感谢pipenv的自动加载.env,但是检查的.env文件到项目的混帐分布将与传统使用的碰撞.env存储机密(如密码) -事实上,我的默认.gitignore …
编辑:为root工作,sudo是问题.参见下文.
我有一个带有我自己的库的目录,例如我的Python库位于/home/name/lib/py.
我通过将以下行添加到以下行,将此目录添加到Python的所有用户(包括root)的PATH中/etc/bash.bashrc:
export PYTHONPATH=$PYTHONPATH:/home/name/lib/py
Run Code Online (Sandbox Code Playgroud)
它适用于所有用户(包括root用户).但它对sudo不起作用.有什么办法可以让sudo使用/etc/bash.bashrc吗?
编辑:更多信息:
我已经添加PYTHONPATH到sudoers文件像这样:Defaults env_keep += "HOME PYTHONPATH".它不会起作用.
env | grep PYTHON:
PYTHONDONTWRITEBYTECODE=1
PYTHONPATH=/home/name/lib/py
sudo env | grep PYTHON:
PYTHONDONTWRITEBYTECODE=1
sudo echo $PYTHONPATH:
/home/name/lib/py
Run Code Online (Sandbox Code Playgroud) 我知道你可以通过冒号将多个位置添加到python路径,即:
export PYTHONPATH=~/one/location:~/second/location
Run Code Online (Sandbox Code Playgroud)
等等
我有几个地方要添加,使用上面的方法看起来很乱.有没有办法在多行中添加它们?这是我尝试过的,最后一行删除了第一行.
export PYTHONPATH=~/one/location
export PYTHONPATH=~/second/location
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在尝试使用pip在本地安装软件包.它曾经使用--user但现在当我尝试它时,它找到包的版本,/usr/local/lib/然后不在本地安装它.通常情况下,将安装在的东西~/.local,但现在它只是检查包装上的系统级目录,如果它的存在,它不安装它(这是不是我想要的),如果它不存在,它会尝试安装它在/usr/local/lib其中我没有写权限.例如:
$ pip install --user rpy2
Requirement already satisfied (use --upgrade to upgrade): rpy2 in /usr/local/lib/python2.7/dist-packages/
Run Code Online (Sandbox Code Playgroud)
如何使pip install --user总是转到~/.local而不是系统范围的目录?
我希望能够paraview.simple在PyCharm中使用该库.我已经在我的电脑上安装了paraview.这个软件包无法安装,pip据我所知,没有.whl文件.网站文档建议将包含所有python文件的目录添加到PYTHONPATH.
如何在我的PyCharm会话中在PYTHONPATH中添加相关文件夹,并默认保存在那里,这样当我关闭并重新打开paraview.simple库时仍然可用?
我在PYTHONPATH中的一个目录中有一个自定义模块,其名称与标准库模块之一相同,因此当我import module_name,该模块被加载时.如果我想使用原始标准库模块,有没有办法强制Python从标准库而不是从PYTHONPATH目录导入,除了重命名自定义模块并更改每个引用以指向新名称?
我们假设我有一个名为的python包bestpackage.
惯例规定,bestpacakge也可以是一个目录,sys.path其中包含一个 __init__.py使解释器假设可以从中导入的目录.
有什么办法可以为包名设置一个变量,这样可以将目录命名为与我导入它的指令不同的东西吗?有没有办法让namespacing不关心目录名称,而是尊重其他配置?
我的超级时尚客户端开发人员非常喜欢这些性感的something.otherthing.js项目名称,我们的一个较小的项目!
编辑:
为了澄清,我的问题的主要目的是允许我的客户端人员继续使用他们现有的约定(some.app.js)调用他们的"项目"(我们都添加到我们的路径中)目录中的目录,即使在某些情况下,它们实际上是python包,它们将在路径上并在import内部源自语句.我意识到这实际上是一件非常糟糕的事情,所以我出于好奇而要求更多.因此,这里的一个重大问题是规避了.目录名称(以及假定的包名称)意味着属性访问这一事实.这不能让我感到惊讶,这无法解决,我只是好奇是否有可能在导入背后的"魔法"更深层次.
这里有一些很好的响应,但都依赖于进行某种经典导入,其中属性访问器.将与目录名冲突.
我有两台运行Ubuntu 14.04服务器的计算机(我们称之为A和B).B最初是10.04但它已经收到两次升级到12.04和14.04.我不明白为什么两台计算机上的python路径不同.
正如你可以在下面的两个路径看,画中画安装路径/usr/local/lib/python2.7/dist-packages来之前的APT Python包路径/usr/lib/python2.7/dist-packages在Ubuntu A,但说到后在Ubuntu B.
如果通过apt和pip安装了python包,这会导致一些问题.如下所示,如果安装了python-sixapt package和sixpip包,它们可能是两个不同的库版本.
软件包系统的安装并不总是我的选择,但可能是安装的其他软件包的某些依赖项.
这个问题可能可以通过virtualenv来解决,但由于我没有详细说明的原因,我不能在这里使用virtualenv,并且必须在系统范围内安装pip包.
>>> import sys, six
>>> sys.path
['',
'/usr/local/bin',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PILcompat',
'/usr/local/lib/python2.7/dist-packages/IPython/extensions']
>>> six
<module 'six' from '/usr/local/lib/python2.7/dist-packages/six.pyc'>
Run Code Online (Sandbox Code Playgroud)
>>> import sys, six
>>> sys.path
['',
'/usr/local/bin',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PILcompat',
'/usr/local/lib/python2.7/dist-packages/IPython/extensions']
>>> six
>>> <module 'six' from '/usr/lib/python2.7/dist-packages/six.pyc'>
Run Code Online (Sandbox Code Playgroud)
两台机器$PATH都是一样的,而且 …
python ×10
pythonpath ×10
bash ×2
django ×1
easy-install ×1
heroku ×1
import ×1
linux ×1
macos ×1
module ×1
package ×1
pip ×1
pipenv ×1
pycharm ×1
pysolr ×1
python-3.x ×1
ubuntu ×1
ubuntu-14.04 ×1
virtualenv ×1