<p>如<a href="https://stackoverflow.com/questions/46204969/hyperlinks-in-a-pandas-dataframe-in-python">this question</a>中所述,可以导入别名以下划线开头的模块(例如<code>import pandas as _pandas</code>)。名称仍然可以作为<code>myzip._pandas</code>使用,但是IPython tab completion不会自动完成它(除非您首先显式键入下划线)。另外,如果您执行<code>from myzip import *</code>,它将不会被导入,尽管您无论如何都不应该这样做。你知道吗</p>
<p>然而,正如在<a href="https://stackoverflow.com/questions/26516405/hiding-module-imports-in-package">this other question</a>中提到的,更好的“解决方案”就是不要担心它。如果有人做了<code>import myzip</code>,那么他们能够访问<code>myzip.pandas</code>并没有什么坏处;这并不是说他们自己不能导入<code>pandas</code>。另外,在这种情况下没有名称冲突的风险,因为<code>pandas</code>在您的模块下有名称空间。唯一可能出现名称冲突的方法是,如果您的模块本身将名称<code>pandas</code>用于两个不同的事情(例如,除了导入的模块之外,还定义了一个名为<code>pandas</code>的全局变量);但这是模块内部的问题,无论<code>pandas</code>是否可从外部访问。你知道吗</p>
<p>如果有人拥有自己的变量<code>pandas</code>,然后执行<code>from myzip import *</code>,则可能会出现名称冲突,但正是由于这个原因,不鼓励星型导入,并且导入模块的名称在这方面与其他名称没有区别。例如,执行<code>from myzip import *</code>操作的人可能会遇到与名称<code>save</code>或<code>load</code>的冲突。当涉及到星型导入名称冲突时,专门担心导入的模块名称是没有用的。你知道吗</p>
<p>另外,值得注意的是,许多广泛使用的库都以这种方式公开了自己的导入,这并不被认为是一个问题。熊猫本身就是一个例子:</p>
<pre><code>>>> import pandas
>>> pandas.np
<module 'numpy' from '...'>
</code></pre>
<p>。如果你认为这不是问题的话,那么你是一个很好的伙伴。你知道吗</p>