小编liq*_*ock的帖子

无法从 shell 脚本激活 conda env

我已经尝试了我在 SO 上看到的一切来让它工作,但到目前为止一切都失败了。使用 macOS Big Sur 11.6,在终端中使用 bash(不是 zsh)。

我正在尝试创建一个安装文件并执行该文件sh setup.sh,该文件将设置环境,安装 python,然后激活它。没有什么花哨。手动执行它可以正常工作,但是一旦我将其放入 shell 脚本中,它就不起作用了。我正在一个空的项目文件夹中运行此脚本。

当前脚本:

conda create -n MASTER python=3.8.5 -y

conda activate MASTER
Run Code Online (Sandbox Code Playgroud)

是的,开始就是这么简单。我注释掉了其他 pip 安装,直到它正常工作。

我尝试运行:bash -i setup.sh但它仍然没有激活。我没有收到任何错误,但我仍然陷入困境(base)

我尝试使用 source:source /opt/anaconda3/etc/profile.d/conda.sh在脚本开头和/或激活之前,仍然不起作用。再次没有错误,但卡在了(base)

我尝试eval $(conda shell.bash hook)在脚本开始处和尝试激活环境之前使用:,但失败了。这次我收到错误:

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
To initialize your shell, run

    $ conda init <SHELL_NAME>

Currently supported shells are:
  - bash
  - fish
  - tcsh …
Run Code Online (Sandbox Code Playgroud)

python macos bash shell anaconda

5
推荐指数
1
解决办法
5668
查看次数

通过无限 while 循环在函数之间传递数据

一直在努力让它工作,因为我无法使用return在不会结束的 while 循环中使用。

简而言之,我在一个函数receive()(无限循环)中的套接字客户端中接收一条消息,并且需要将该传入消息的结果传递给main(). 尝试使用yield,因为我不确定还有什么可以实现这一目标。我创建了另一个函数来尝试yield捕获receive()

我知道初始消息到达服务器,因为它输出消息,并且我知道客户端正在接收服务器的确认消息,因为它正在打印它。我只是没有运气将该数据传递给main(),因此其余代码将无法正常工作。

我对此很陌生,所以我可能做错了。我应该使用类来更轻松地共享数据,但对它们的掌握还不够。希望使用产量或其他东西可以解决这个问题。

接收函数:

def receive():
    while True:
        try:
            incoming = client.recv(2048).decode(FORMAT)
            if 'RECEIVED' in incoming:
                confirmation = 'confirmed'
                yield confirmation
            print(incoming)
        except:
            print("Connection interrupted.")
            client.close()
            break

#------------
# also tried
#------------
def receive():
    while True:
        try:
            incoming = client.recv(2048).decode(FORMAT)
            if 'RECEIVED:COMPLETE' in incoming:
                confirmation = 'confirmed'
            else:
                confirmation = 'unconfirmed'
            yield confirmation
        except:
            print("Connection interrupted.")
            client.close()
            break

Run Code Online (Sandbox Code Playgroud)

返回函数:

def pass_return(passed_return_value):
    passed_return_value …
Run Code Online (Sandbox Code Playgroud)

python variables if-statement function while-loop

0
推荐指数
1
解决办法
372
查看次数

标签 统计

python ×2

anaconda ×1

bash ×1

function ×1

if-statement ×1

macos ×1

shell ×1

variables ×1

while-loop ×1