从cat重定向会导致不同的python解释器行为

从cat重定向会导致不同的python解释器行为,python,python-3.x,paramiko,io-redirection,pythoninterpreter,Python,Python 3.x,Paramiko,Io Redirection,Pythoninterpreter,我不确定如何最好地解决或查询这个问题。我有一个简单的程序,它使用fs.sshfs模块,该模块依赖于paramiko,因此cryptogaphy.utils。从我的virtualenv和python版本3.5.2 (venv) $ cat tump.py from fs.sshfs import SSHFS remote = SSHFS('rushmore') print(*remote.listdir('.'), sep='\n') 我的环境安装了以下模块 (venv) $ pip free

我不确定如何最好地解决或查询这个问题。我有一个简单的程序,它使用
fs.sshfs
模块,该模块依赖于
paramiko
,因此
cryptogaphy.utils
。从我的
virtualenv
python
版本
3.5.2

(venv) $ cat tump.py
from fs.sshfs import SSHFS

remote = SSHFS('rushmore')
print(*remote.listdir('.'), sep='\n')
我的环境安装了以下模块

(venv) $ pip freeze
appdirs==1.4.3
asn1crypto==0.24.0
bcrypt==3.1.4
cffi==1.11.5
cryptography==2.2.2
fs==2.0.21
fs.sshfs==0.8.0
idna==2.6
paramiko==2.4.1
pkg-resources==0.0.0
pyasn1==0.4.2
pycparser==2.18
PyNaCl==1.2.1
pytz==2018.4
six==1.11.0
typing==3.6.4
当我直接在文件上调用python时,我收到一个针对
getargspec
AttributeError

(venv) $ python tump.py
Traceback (most recent call last):
  File "tump.py", line 1, in <module>
    from fs.sshfs import SSHFS
  File "/mnt/max/home/robinsph/git/HCPVaTT/venv/lib/python3.5/site-packages/fs/sshfs/__init__.py", line 7, in <module>
    from .sshfs import SSHFS
  File "/mnt/max/home/robinsph/git/HCPVaTT/venv/lib/python3.5/site-packages/fs/sshfs/sshfs.py", line 13, in <module>
    import paramiko
  File "/mnt/max/home/robinsph/git/HCPVaTT/venv/lib/python3.5/site-packages/paramiko/__init__.py", line 22, in <module>
    from paramiko.transport import SecurityOptions, Transport
  File "/mnt/max/home/robinsph/git/HCPVaTT/venv/lib/python3.5/site-packages/paramiko/transport.py", line 34, in <module>
    from cryptography.hazmat.primitives.ciphers import algorithms, Cipher, modes
  File "/mnt/max/home/robinsph/git/HCPVaTT/venv/lib/python3.5/site-packages/cryptography/hazmat/primitives/ciphers/__init__.py", line 7, in <module>
    from cryptography.hazmat.primitives.ciphers.base import (
  File "/mnt/max/home/robinsph/git/HCPVaTT/venv/lib/python3.5/site-packages/cryptography/hazmat/primitives/ciphers/base.py", line 11, in <module>
    from cryptography import utils
  File "/mnt/max/home/robinsph/git/HCPVaTT/venv/lib/python3.5/site-packages/cryptography/utils.py", line 85, in <module>
    signature = inspect.getargspec
AttributeError: module 'inspect' has no attribute 'getargspec'
(venv)$python tump.py
回溯(最近一次呼叫最后一次):
文件“tump.py”,第1行,在
从fs.sshfs导入sshfs
文件“/mnt/max/home/robinsph/git/HCPVaTT/venv/lib/python3.5/site packages/fs/sshfs/_init__.py”,第7行
从.sshfs导入sshfs
文件“/mnt/max/home/robinsph/git/HCPVaTT/venv/lib/python3.5/site packages/fs/sshfs/sshfs.py”,第13行,在
进口帕拉米科
文件“/mnt/max/home/robinsph/git/HCPVaTT/venv/lib/python3.5/site packages/paramiko/__init__.py”,第22行
从paramiko.transport导入安全选项,transport
文件“/mnt/max/home/robinsph/git/HCPVaTT/venv/lib/python3.5/site packages/paramiko/transport.py”,第34行,在
来自加密。危险品。原语。密码导入算法、密码、模式
文件“/mnt/max/home/robinsph/git/HCPVaTT/venv/lib/python3.5/site packages/cryptography/hazmat/primitives/ciphers/______.py”,第7行
来自密码术.hazmat.primitives.ciphers.base导入(
文件“/mnt/max/home/robinsph/git/HCPVaTT/venv/lib/python3.5/site packages/cryptography/hazmat/primitives/ciphers/base.py”,第11行
从加密导入utils
文件“/mnt/max/home/robinsph/git/HCPVaTT/venv/lib/python3.5/site packages/cryptography/utils.py”,第85行,在
签名=inspect.getargspec
AttributeError:模块“inspect”没有属性“getargspec”
当我使用重定向到文件描述符调用时

(venv) $ python <(cat tump.py)
lib32
boot
var
app
bin
lost+found
usr
snap
vmlinuz
initrd.img
root
srv
proc
home
lib
lib64
sys
initrd.img.old
mnt
tmp
media
libx32
run
opt
.bash_history
sbin
vmlinuz.old
dev
etc

(venv)$python您的路径上有一个名为
inspect.py
的不同文件,这就是要导入的文件。添加

import inspect
print(inspect.__file__)
这本身就是许多问题的重复。关于你的问题,有趣的是重定向正在改变路径。如果我们在创建本地
inspect.py
后将
print(sys.path[:3])
添加到fs.sshfs的导入中,我会得到:

(36) dsm@winter:~/coding$ python <(cat tump.py)
/home/dsm/sys/miniconda3/envs/36/lib/python3.6/inspect.py
['/dev/fd', '/home/dsm/sys/miniconda3/envs/36/lib/python36.zip', '/home/dsm/sys/miniconda3/envs/36/lib/python3.6']
(36) dsm@winter:~/coding$ python tump.py 
/home/dsm/coding/inspect.py
['/home/dsm/coding', '/home/dsm/sys/miniconda3/envs/36/lib/python36.zip', '/home/dsm/sys/miniconda3/envs/36/lib/python3.6']
Traceback (most recent call last):
  File "tump.py", line 6, in <module>
    from fs.sshfs import SSHFS
[...]
AttributeError: module 'inspect' has no attribute 'getmro'
(36)dsm@winter:~/coding$python