当Python试图;进口;?

当Python试图;进口;?,python,windows,Python,Windows,想象一下一些假设的python代码: from turboencabulator import panametricfan 如果我尝试在我的计算机(Windows,64位,Windows 10)上运行此功能,它将无法找到模块: 它在找什么? 当Python试图加载模块时,它在寻找什么?它是.py文件吗?它是一个.dll(因为这是Windows)。是文件夹吗 Windows有模块;它们被称为集合 Windows具有程序集的概念。如果声明要使用名为turboencabulator的程序集,它将查

想象一下一些假设的python代码:

from turboencabulator import panametricfan
如果我尝试在我的计算机(Windows,64位,Windows 10)上运行此功能,它将无法找到模块:

它在找什么? 当Python试图加载模块时,它在寻找什么?它是
.py
文件吗?它是一个
.dll
(因为这是Windows)。是文件夹吗

Windows有模块;它们被称为集合 Windows具有程序集的概念。如果声明要使用名为
turboencabulator
的程序集,它将查找程序集清单:

  • 涡轮发动机舱单
您还可以创建一个名为
turboencabulator
文件夹,它将在其中查找Assembly清单:

turboencabulator
|--- turboencabulator.manifest 
然后,该清单将依次声明构成该程序集的所有文件

例如,如果我需要使用Microsoft Visual C Runtime 8.0,我将声明对该模块的依赖关系

Microsoft.VC80.CRT

然后Windows将搜索:

  • Microsoft.VC80.CRT.manifest
    文件夹中的文件
  • Microsoft.VC80.CRT
    文件夹
    • 然后必须包含
      Microsoft.VC80.CRT.manifest
  • 其他一些地方(比如
    WinSxS
    ,可能是路径,谁知道呢)
  • 然后清单只是一个文本文件,让您知道msvcrt由3个DLL组成:

    python在寻找什么? 指定要导入模块时:

    from RetroEncabulator import GirdleSpring
    
    python在寻找什么

    • 二进制文件
    • 拉链
    • 它是已在注册表中注册的命名项目吗
    • 声明构成模块的所有文件的模块清单文件的名称
    python到底在寻找什么

    奖金问题
    • 它看起来在哪里
    • 它可以被配置为查找位置吗
    • 模块是否可以在某个地方注册,这样就不必进行搜索?(正如正确编写的Windows应用程序应该做的那样)
    花言巧语
    • 实际上我是numpy的
    • 实际上,我是cntk的
    而这两种“东西”都没有被“发现”

    额外阅读
    补充调查 为了对比目前为止的说法,我决定实际监视python,看看它在做什么和寻找什么:

    • HKEY_当前_用户/软件/Python/PythonCore/2.7/Modules/turboencabulator
    • HKEY_LOCAL_MACHINE/Software/Python/PythonCore/2.7/Modules/turboencabulator
    • D:\DevelopPy\Bunny\turboencabulator
    • D:\DevelopPy\Bunny\turboencabulator.pyd
    • D:\DevelopPy\Bunny\turboencabulator.py
    • D:\DevelopPy\Bunny\turboencabulator.pyw
    • D:\DevelopPy\Bunny\turboencabulator.pyc
    • D:\Programs\Python27\DLLs\turboencabulator
    • D:\Programs\Python27\Lib\turboencabulator
    • D:\Programs\Python27\Lib\site packages\turboencabulator
    我在登记处看到了。这是否意味着它可以注册?
    我看到它在寻找文件,除了
    py
    pyc
    pyw
    pyd
    )。这些是经过编译的吗?
    我在
    Python\DLLs
    文件夹中看到它。这是否意味着可能存在DLL?

    我看到它在
    Lib
    ?这些是用于中间对象二进制文件的吗?

    当您在代码中包含
    import
    语句时,python尝试按以下顺序查找python文件包目录

  • 当前工作目录
  • 本地用户站点包
  • 通用站点包
  • 您可以通过以下代码查看路径

    import sys
    print(sys.path)
    
    您还可以添加自己的路径

    注意:在导入其他模块之前,必须添加此行

    import sys
    sys.path.append("your/complete/path/to/directory")
    

    猜猜这会是自我回答吗?不管怎样:这个问题是针对Windows的吗?我不明白这个漫无边际的问题的目的是什么。结尾的链接似乎与它所要求的教程完全一致,但堆栈溢出不是一个首先要求教程链接的地方。不,你为什么会这样认为?你做过Python的基础教程吗?任何python文件都是一个模块,但您自己的链接告诉您这一点。没有阅读就发布它有什么意义呢?第二段:“简单地说,模块是一个由Python代码组成的文件。”它要寻找什么Python文件?它是否查找turboencabulator.py?它要查找什么包目录?它是否查找涡轮增压器?这是否意味着python中的模块不是编译的二进制文件?您看到sys.path的输出了吗?