【问题标题】:How to write a Python package/module?如何编写 Python 包/模块?
【发布时间】:2012-06-21 17:41:14
【问题描述】:

由于我是新手,我开始通过使用 python GUI 编写简单程序来学习 python ..
每次尝试清除控制台时,我都需要定义以下几行代码

import os

def cls():
  os.system('cls')
  print("Console Cleared")

后来我称之为

cls()

现在我已经厌倦了一遍又一遍地编写上面的代码(每次我打开 gui 窗口)..
所以,我想创建一个名为cls 的模块以供将来使用以节省我的时间..
最后我会这样称呼它

import cls

cls()

有没有办法做到这一点...

谢谢!

【问题讨论】:

    标签: python windows python-2.7 pythonpath


    【解决方案1】:

    如果您将 cls() 函数放在名为 cls.py 的文件中,并将其放在与调用它的程序相同的目录中,或者放在系统上 PYTHONPATH 的某个位置,那么您可以使用您的函数如下:

    import cls
    
    cls.cls()
    

    这是因为cls()函数在cls模块内部(模块名称由文件名决定)。

    如果您只想做到cls(),那么请执行以下操作:

    from cls import cls
    
    cls()
    

    【讨论】:

    • 谢谢,顺便说一句,当我在另一个目录中时如何访问同一个模块.. 例如,我可以从任何地方访问os 模块.. 同样我想在全球范围内访问它跨度>
    • 您需要将它放在您的 PYTHONPATH 中,或者添加到您的 PYTHONPATH 以包含它所在的目录。不幸的是,这有点复杂,我认为我无法在 cmets 中完全解释这个概念 - - 在 StackOverflow 上搜索有关 PYTHONPATH 的其他问题以获取更多信息。
    【解决方案2】:

    您可以通过使您的模块跨平台来增加它的趣味性。这里是:

    import os, sys
    def cls():
        if 'win' in sys.paltform:
            os.system('cls')
            print 'Console cleared'
        else:
            os.system('clear')
            print 'Console cleared'
    

    现在,您可以在任何其他脚本中使用它:

    from cls import cls
    cls()
    

    【讨论】:

    • 这没有回答问题。实际上,这甚至是不正确的,因为函数名后面没有括号。
    • 顺便说一下if 'win' in sys.platform 将触发mac 和windows(darwinwin32)。应该只检查win32 或至少使用startswith
    【解决方案3】:

    嗯,一个解决方案是创建一个目录来添加你的模块并将这个目录添加到 Python pat。例如,您可以在 C:\mypymodules 创建一个目录,并在其中放置一个带有您的函数的 cls.py 文件。

    现在,让我们将此目录添加到 Python 路径。关注these instructions,只需插入C:\mypymodules 来代替那里提到的目录。现在,打开一个新的命令行窗口并尝试导入模块。

    另一种解决方案是使用distutils*。不要创建自己的模块目录,而是在 cls.py 文件的同一目录中创建一个名为 setup.py 的文件,其内容如下:

    from distutils.core import setup
    setup(name='cls', py_modules=['cls'])
    

    然后,执行它:

    > python setup.py install
    

    这可能会将您的模块安装在默认的 Python 库目录中。实际上,这是打包、管理或 python 包的方式(或者更好的方式之一)。

    (我并没有真正使用 Windows,所以可能会破坏一些细节。尽管如此,我相信一般概念是相同的。)

    * 有些人可能会争论使用setuptools,但我认为这对你的情况来说真的是矫枉过正。无论如何,如果您想了解更多信息,请参阅this question

    【讨论】:

      猜你喜欢
      • 2021-12-16
      • 1970-01-01
      • 2015-04-23
      • 2021-07-10
      • 2011-09-16
      • 2020-11-27
      • 1970-01-01
      • 2021-11-17
      相关资源
      最近更新 更多