GVKun编程网logo

Linux上的PYTHONPATH(linux pythonpath)

14

在这篇文章中,我们将为您详细介绍Linux上的PYTHONPATH的内容,并且讨论关于linuxpythonpath的相关问题。此外,我们还会涉及一些关于ImportError:无法导入名称ABCMe

在这篇文章中,我们将为您详细介绍Linux上的PYTHONPATH的内容,并且讨论关于linux pythonpath的相关问题。此外,我们还会涉及一些关于ImportError:无法导入名称ABCMeta – Linux上的PyDev中的Python错误、Jenkins:将我的Python模块放在PYTHONPATH上、linux – 使用bash脚本添加到$PYTHONPATH、Linux上的Python cmd不会自动完成特殊字符或符号的知识,以帮助您更全面地了解这个主题。

本文目录一览:

Linux上的PYTHONPATH(linux pythonpath)

Linux上的PYTHONPATH(linux pythonpath)

我是新手,已经开始学习Python,但是我有一些我听不懂的问题,

  1. PYTHONPATH(在Ubuntu上)究竟是什么?是文件夹吗?
  2. 是Ubuntu上默认提供的Python,还是必须显式安装?
  3. 所有模块所在的文件夹在哪里(我有很多文件夹称为python_)?
  4. 如果我希望在编程时能使用一个新模块(例如pyopengl),应该在哪里介绍下载的文件夹中的所有文件夹?
  5. 回到PYTHONPATH问题,如何配置PYTHONPATH以便开始在新模块上工作?

答案1

小编典典
  1. PYTHONPATH是环境变量
  2. 是的(请参阅https://unix.stackexchange.com/questions/24802/on-which-unix-distributions-is-python-installed-as-part-of-the-default-install)
  3. /usr/lib/python2.7 在Ubuntu上
  4. 您不应该手动安装软件包。而是使用pip。当软件包不在pip中时,它通常具有setuptools安装脚本,该脚本会将软件包安装到正确的位置(请参见第3点)。
  5. 如果使用pip或setuptools,则无需PYTHONPATH显式设置

如果查看pyopengl的说明,您会发现它们与第4点和第5点一致。

ImportError:无法导入名称ABCMeta – Linux上的PyDev中的Python错误

ImportError:无法导入名称ABCMeta – Linux上的PyDev中的Python错误

我在 Linux上使用PyDev编写代码时遇到了这个奇怪的错误.即使像这样的简单代码也会产生错误
print 'Hello World'

而错误就在这里

True
Traceback (most recent call last):
  File "/usr/lib/python2.7/site.py",line 62,in <module>
    import os
  File "/usr/lib/python2.7/os.py",line 398,in <module>
    import UserDict
  File "/usr/lib/python2.7/UserDict.py",line 83,in <module>
    import _abcoll
  File "/usr/lib/python2.7/_abcoll.py",line 11,in <module>
    from abc import ABCMeta,abstractmethod
ImportError: cannot import name ABCMeta

我的模块名为sample.py.
请帮我.谢谢

解决方法

我的猜测是你的工作目录或PYTHONPATH中有一个名为abc.py或abc.pyc的文件,并且该文件会影响stdlib abc模块.

Jenkins:将我的Python模块放在PYTHONPATH上

Jenkins:将我的Python模块放在PYTHONPATH上

我正在使用Jenkins测试nodepy我开发的Python模块。但是,出现以下错误:

File "/var/lib/jenkins/jobs/NodePy/workspace/convergence.py",line 6,in workspace.convergence
Failed example:
    from nodepy import rk,convergence,ivp
Exception raised:
    Traceback (most recent call last):
      File "/usr/lib/python2.7/doctest.py",line 1289,in __run
        compileflags,1) in test.globs
      File "<doctest workspace.convergence[0]>",line 1,in <module>
        from nodepy import rk,ivp
    ImportError: No module named nodepy

如何在Jenkins中设置PYTHONPATH(以便我的模块可导入)?

我什至不确定应该添加哪个目录。似乎Jenkins将东西放在jenkins / jobs / nodepy / workspace
/中,因此该目录甚至没有正确的名称供python查找。

编辑:

python模块nodepygit我配置了jenkins作业以查看和结帐的存储库。

linux – 使用bash脚本添加到$PYTHONPATH

linux – 使用bash脚本添加到$PYTHONPATH

我写了一个bash脚本来添加到我的$PYTHONPATH.我的.sh文件包含以下内容:

sudo echo export PYTHONPATH=$PYTHONPATH:/path/to/new/python/module >> ~/.bashrc

我想要添加到我的.bashrc中的是:

PYTHONPATH=$PYTHONPATH:/path/to/new/python/module

但是我只能添加它:

PYTHONPATH=/all/other/python/modules/already/on/path:/path/to/new/python/module

我不希望将实际的$PYTHONPATH值添加到我的.bashrc中,只是变量名.请帮忙!

解决方法

使用单引号:

$echo 'export PYTHONPATH=$PYTHONPATH:/path/to/new/python/module' >> .bashrc
$cat .bashrc 
export PYTHONPATH=$PYTHONPATH:/path/to/new/python/module

shell不对单引号字符串执行变量扩展.

另请注意,如果您要写入〜/ .bashrc,则不需要sudo.用户应该拥有自己的〜/ .bashrc.此外,如上所述,sudo命令仅对echo进行操作.重定向>〜/ .bashrc使用用户的权限级别完成.由于echo不需要并且没有从sudo中获益,所以sudo实际上是一种无操作. [帽子提示:tripleee]

Linux上的Python cmd不会自动完成特殊字符或符号

Linux上的Python cmd不会自动完成特殊字符或符号

诸如 – 等的字符不会被 Python的基于readline的cmd模块解析为与字母数字ASCII字符相同的方式.这似乎只是Linux特定的问题,因为它似乎在Mac OS上按预期工作.

示例代码

import cmd

class Test(cmd.Cmd):
    def do_abc(self,line):
        print line 
    def complete_abc(self,text,line,begidx,endidx):
        return [i for i in ['-xxx','-yyy','-zzz'] if i.startswith(text)]

try:
    import readline
except ImportError:
    print "Module readline not available."
else:
    import rlcompleter
    if 'libedit' in readline.__doc__:
        readline.parse_and_bind("bind ^I rl_complete")
    else:
        readline.parse_and_bind("tab: complete")

test().cmdloop()

Mac OS上的预期行为

(Cmd) abc <TAB>
abc  
(Cmd) abc -<TAB>
-xxx  -yyy  -zzz  
(Cmd) abc -x<TAB>
(Cmd) abc -xxx

Linux上的行为不正确

(Cmd) abc <TAB>
abc  
(Cmd) abc -x<TAB>
 <nothing>
(Cmd) abc -<TAB> 
(Cmd) abc --<TAB>
(Cmd) abc ---<TAB>
(Cmd) abc ----

我尝试添加 – 到cmd.Cmd.identchars,但它没有帮助.

cmd.Cmd.identchars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMnopQRSTUVWXYZ0123456789_-'

为什么Mac OS和Linux之间的readline解析存在差异,即使它们都使用GNU readline:

苹果系统:

>>> readline.__doc__
'Importing this module enables command line editing using GNU readline.'

Linux的:

>>> readline.__doc__
'Importing this module enables command line editing using GNU readline.'

谢谢!

解决方法

在linux上,readline模块考虑 – 选项卡完成的分隔符.也就是说,在遇到 – 后,将尝试新的完成.

解决问题的方法是从readline用作分隔符的字符集中删除.

例如.

old_delims = readline.get_completer_delims()
readline.set_completer_delims(old_delims.replace('-',''))

今天关于Linux上的PYTHONPATHlinux pythonpath的介绍到此结束,谢谢您的阅读,有关ImportError:无法导入名称ABCMeta – Linux上的PyDev中的Python错误、Jenkins:将我的Python模块放在PYTHONPATH上、linux – 使用bash脚本添加到$PYTHONPATH、Linux上的Python cmd不会自动完成特殊字符或符号等更多相关知识的信息可以在本站进行查询。

本文标签: