鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    Ubuntu20.04.1 LTS在执行pip install espeakng时,报错“externally-managed-environment”

    已定时 已固定 已锁定 已移动 已解决
    综合问题
    python3 pip3 教程
    3
    13
    1.2k
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 2
      2415283436
      最后由 编辑

      执行pip install espeakng

      error: externally-managed-environment
      
      × This environment is externally managed
      ╰─> To install Python packages system-wide, try apt install
          python3-xyz, where xyz is the package you are trying to
          install.
          
          If you wish to install a non-Debian-packaged Python package,
          create a virtual environment using python3 -m venv path/to/venv.
          Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
          sure you have python3-full installed.
          
          If you wish to install a non-Debian packaged Python application,
          it may be easiest to use pipx install xyz, which will manage a
          virtual environment for you. Make sure you have pipx installed.
          
          See /usr/share/doc/python3.12/README.venv for more information.
      
      note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
      hint: See PEP 668 for the detailed specification.
      

      又试着执行sudo pip install espeakng

      [sudo] lwq 的密码: 
      error: externally-managed-environment
      
      × This environment is externally managed
      ╰─> To install Python packages system-wide, try apt install
          python3-xyz, where xyz is the package you are trying to
          install.
          
          If you wish to install a non-Debian-packaged Python package,
          create a virtual environment using python3 -m venv path/to/venv.
          Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
          sure you have python3-full installed.
          
          If you wish to install a non-Debian packaged Python application,
          it may be easiest to use pipx install xyz, which will manage a
          virtual environment for you. Make sure you have pipx installed.
          
          See /usr/share/doc/python3.12/README.venv for more information.
      
      note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
      hint: See PEP 668 for the detailed specification.
      

      又上网查询,使用pipx install espeakng

      
      No apps associated with package espeakng or its dependencies. If you are attempting to install a
      library, pipx should not be used. Consider using pip or a similar tool instead.
      

      **请问应该怎么解决?😞 **

      2 1 条回复 最后回复 回复 引用 0
      • 2
        2415283436 @2415283436
        最后由 编辑

        @2415283436
        已解决

        python3 -m venv myenv #创建虚拟环境myenv
        source myenv/bin/activate #启用Python虚拟环境
        which python #当前的环境在哪
        deactivate #退出虚拟环境
        pip --version #找出外部环境的位置
        cp -r myenv/lib/python3.12/site-packages/espeakng /usr/lib/python3/dist-packages #将espeakng拷贝到外部环境中
        
        S 1 条回复 最后回复 回复 引用 0
        • 小伊小
          机器人小伊
          最后由 编辑

          在Ubuntu 20.04.1 LTS上,当你尝试使用pip安装espeakng时遇到的错误提示“externally-managed-environment”是由于系统Python环境的特殊管理方式造成的。Ubuntu和一些其他Linux发行版为了维护系统Python环境的稳定性,限制了直接使用pip在系统Python环境中安装包。

          针对你的问题,有几种可能的解决方案:

          1. 使用系统包管理器安装:
            如果espeakng有对应的Debian包,你可以使用apt来安装。但是,根据我的知识,espeakng可能不是Ubuntu的官方仓库中的一部分。你可以尝试搜索类似的包,如espeak:

            sudo apt update
            sudo apt install espeak
            
          2. 使用虚拟环境:
            如果你确实需要安装一个不在系统仓库中的Python包,如某个特定的espeakng版本或者其他Python库,你应该使用虚拟环境。这样可以避免影响系统Python环境:

            # 安装python3-venv(如果尚未安装)
            sudo apt install python3-venv
            
            # 创建一个虚拟环境
            python3 -m venv myenv
            
            # 激活虚拟环境
            source myenv/bin/activate
            
            # 在虚拟环境中尝试安装espeakng(注意:espeakng可能不是一个pip包)
            pip install espeakng  # 如果这不是一个有效的pip包,这一步会失败
            

            如果espeakng不是一个有效的pip包,你可能需要找到其他方式安装它,比如从源代码编译。

          3. 使用pipx:
            pipx是一个用于安装和管理Python应用程序的工具,它会自动为每个应用创建一个独立的虚拟环境。但是,pipx通常用于安装可执行的应用程序,而不是库。如果espeakng是一个应用程序,你可以尝试安装它(但根据你提供的错误信息,这似乎不是一个选项)。

          4. 手动安装:
            如果espeakng是一个可以从源代码编译的程序,你可能需要下载源代码并按照其提供的说明进行编译和安装。

          5. 检查espeakng的正确性:
            确认espeakng是否是你要安装的正确包名。有时候,包名可能会有所不同,或者它可能不是一个广泛使用的Python包。

          总之,根据你的需求选择合适的安装方法。如果你不确定espeakng是什么或如何安装,可能需要更多的信息或考虑是否有其他替代品可用。


          以上为生成回答,仅供参考~

          我是小伊,已接入ChatGpt,所有回复,仅供参考~

          S 2 条回复 最后回复 回复 引用 0
          • 2
            2415283436 @2415283436
            最后由 编辑

            @2415283436
            已解决

            python3 -m venv myenv #创建虚拟环境myenv
            source myenv/bin/activate #启用Python虚拟环境
            which python #当前的环境在哪
            deactivate #退出虚拟环境
            pip --version #找出外部环境的位置
            cp -r myenv/lib/python3.12/site-packages/espeakng /usr/lib/python3/dist-packages #将espeakng拷贝到外部环境中
            
            S 1 条回复 最后回复 回复 引用 0
            • 2 2415283436 将这个主题标记为已解决,在
            • S
              suuunnnn @2415283436
              最后由 编辑

              @2415283436 您好,安装python3-venv出现如下情况:
              sun@sun-VMware-Virtual-Platform:~/chapt3$ sudo apt install python3-venv
              正在读取软件包列表... 完成
              正在分析软件包的依赖关系树... 完成
              正在读取状态信息... 完成
              将会同时安装下列软件:
              python3-pip-whl python3-setuptools-whl python3.12-venv
              下列【新】软件包将被安装:
              python3-pip-whl python3-setuptools-whl python3-venv python3.12-venv
              升级了 0 个软件包,新安装了 4 个软件包,要卸载 0 个软件包,有 122 个软件包未被升级。
              需要下载 5,678 B/2,425 kB 的归档。
              解压缩后会消耗 2,777 kB 的额外空间。
              您希望继续执行吗? [Y/n] Y
              忽略:1 http://mirrors.ustc.edu.cn/ubuntu noble-updates/universe amd64 python3.12-venv amd64 3.12.3-1ubuntu0.3
              错误:1 http://mirrors.ustc.edu.cn/ubuntu noble-updates/universe amd64 python3.12-venv amd64 3.12.3-1ubuntu0.3
              404 Not Found [IP: 202.38.95.110 80]
              E: 无法下载 http://mirrors.ustc.edu.cn/ubuntu/pool/universe/p/python3.12/python3.12-venv_3.12.3-1ubuntu0.3_amd64.deb 404 Not Found [IP: 202.38.95.110 80]
              E: 有几个软件包无法下载,要不运行 apt-get update 或者加上 --fix-missing 的选项再试试?
              sun@sun-VMware-Virtual-Platform:~/chapt3$ python3 -m venv myenv
              The virtual environment was not created successfully because ensurepip is not
              available. On Debian/Ubuntu systems, you need to install the python3-venv
              package using the following command.

              apt install python3.12-venv
              

              You may need to use sudo with that command. After installing the python3-venv
              package, recreate your virtual environment.

              Failing command: /home/sun/chapt3/myenv/bin/python3
              按照系统操作依然行不通,望回复 感谢!

              1 条回复 最后回复 回复 引用 0
              • S
                suuunnnn @小伊
                最后由 编辑

                @小伊 您好,安装python3-venv出现如下情况:
                sun@sun-VMware-Virtual-Platform:~/chapt3$ sudo apt install python3-venv
                正在读取软件包列表... 完成
                正在分析软件包的依赖关系树... 完成
                正在读取状态信息... 完成
                将会同时安装下列软件:
                python3-pip-whl python3-setuptools-whl python3.12-venv
                下列【新】软件包将被安装:
                python3-pip-whl python3-setuptools-whl python3-venv python3.12-venv
                升级了 0 个软件包,新安装了 4 个软件包,要卸载 0 个软件包,有 122 个软件包未被升级。
                需要下载 5,678 B/2,425 kB 的归档。
                解压缩后会消耗 2,777 kB 的额外空间。
                您希望继续执行吗? [Y/n] Y
                忽略:1 http://mirrors.ustc.edu.cn/ubuntu noble-updates/universe amd64 python3.12-venv amd64 3.12.3-1ubuntu0.3
                错误:1 http://mirrors.ustc.edu.cn/ubuntu noble-updates/universe amd64 python3.12-venv amd64 3.12.3-1ubuntu0.3
                404 Not Found [IP: 202.38.95.110 80]
                E: 无法下载 http://mirrors.ustc.edu.cn/ubuntu/pool/universe/p/python3.12/python3.12-venv_3.12.3-1ubuntu0.3_amd64.deb 404 Not Found [IP: 202.38.95.110 80]
                E: 有几个软件包无法下载,要不运行 apt-get update 或者加上 --fix-missing 的选项再试试?
                sun@sun-VMware-Virtual-Platform:~/chapt3$ python3 -m venv myenv
                The virtual environment was not created successfully because ensurepip is not
                available. On Debian/Ubuntu systems, you need to install the python3-venv
                package using the following command.

                apt install python3.12-venv

                You may need to use sudo with that command. After installing the python3-venv
                package, recreate your virtual environment.

                Failing command: /home/sun/chapt3/myenv/bin/python3
                按照系统操作依然行不通,望回复 感谢!

                1 条回复 最后回复 回复 引用 0
                • 小伊小
                  机器人小伊
                  最后由 编辑

                  您好!从您提供的错误信息来看,您在尝试安装 python3-venv 时遇到了 404 Not Found 错误,这通常意味着所请求的软件包在指定的服务器上不存在。这可能是因为您的 Ubuntu 系统版本与尝试安装的软件包版本不兼容,或者软件源(repository)配置有误。

                  以下是一些可能的解决步骤:

                  1. 更新软件源列表:
                    首先,确保您的软件源列表是最新的。运行以下命令来更新您的包管理器索引:

                    sudo apt update
                    
                  2. 检查 Ubuntu 版本:
                    确认您的 Ubuntu 版本,因为不同的版本可能支持不同的 Python 版本。您可以通过运行以下命令来查看您的 Ubuntu 版本:

                    lsb_release -a
                    
                  3. 安装正确版本的 Python 和 venv:
                    根据您的系统版本,您可能需要安装与您的系统兼容的 Python 和 venv 版本。例如,如果您的系统是 Ubuntu 20.04,它默认可能不直接支持 Python 3.12。您可以尝试安装系统默认支持的 Python 版本(如 Python 3.8)的 venv:

                    sudo apt install python3.8-venv
                    

                    然后,使用 python3.8 -m venv myenv 来创建虚拟环境。

                  4. 手动添加或更改软件源:
                    如果您确实需要 Python 3.12,并且您的 Ubuntu 版本默认不支持,您可能需要手动添加一个提供 Python 3.12 的 PPA(个人软件包存档)或更改软件源。但请注意,这样做可能会引入与系统其他部分的兼容性问题。

                  5. 使用 deadsnakes PPA:
                    Deadsnakes PPA 提供了多个 Python 版本,您可以通过添加这个 PPA 来安装 Python 3.12:

                    sudo add-apt-repository ppa:deadsnakes/ppa
                    sudo apt update
                    sudo apt install python3.12 python3.12-venv
                    
                  6. 考虑使用 Docker 或其他容器技术:
                    如果您需要特定的 Python 版本,但不想更改系统级的软件源,可以考虑使用 Docker 来创建一个包含所需 Python 版本的容器。

                  希望这些步骤能帮助您解决问题!如果还有其他疑问,欢迎继续提问。


                  以上为生成回答,仅供参考~

                  我是小伊,已接入ChatGpt,所有回复,仅供参考~

                  S 1 条回复 最后回复 回复 引用 0
                  • S
                    suuunnnn @小伊
                    最后由 编辑

                    @小伊 与ubuntu24.04适配的python版本是哪个

                    1 条回复 最后回复 回复 引用 0
                    • 小伊小
                      机器人小伊
                      最后由 编辑

                      Ubuntu 24.04 LTS(长期支持版)通常会提供一个默认的Python版本,但具体是哪个版本可能会随着Ubuntu的更新和发布而有所变化。不过,根据公开发布的信息和Ubuntu的常规做法,可以归纳出以下几点:

                      1. 默认Python版本:Ubuntu 24.04 LTS可能会默认安装Python 3的某个版本,如Python 3.8或更高版本(具体取决于Ubuntu 24.04的发布时间和后续的更新)。通常,Ubuntu会提供一个较新的、经过优化和测试的Python版本作为其默认版本。
                      2. 多版本支持:Ubuntu允许用户安装多个Python版本,并通过工具如update-alternatives来切换默认版本。这意味着,即使Ubuntu 24.04默认安装了某个版本的Python,用户仍然可以手动安装其他版本并根据需要进行切换。
                      3. 安装其他版本:如果用户需要安装特定版本的Python(例如Python 2.7,尽管它已不再受官方支持),可以通过从源代码编译安装或使用第三方存储库(如deadsnakes PPA)来实现。但请注意,由于Python 2.7已不再受官方支持,因此从安全性和维护性的角度来看,不推荐在新系统上使用它。

                      综上所述,与Ubuntu 24.04适配的Python版本通常是其默认的Python 3版本(如Python 3.8或更高)。但用户可以根据需要安装和切换其他版本。为了获取最准确的信息,建议查阅Ubuntu 24.04的官方文档或相关教程。


                      以上为生成回答,仅供参考~

                      我是小伊,已接入ChatGpt,所有回复,仅供参考~

                      1 条回复 最后回复 回复 引用 0
                      • S
                        suuunnnn @小伊
                        最后由 编辑

                        @小伊 我尝试使用创建虚拟环境来安装,并将其拷贝到外部环境,但系统提示cp: 无法创建目录 '/usr/lib/python3/dist-packages/espeakng': 权限不够,如何解决

                        1 条回复 最后回复 回复 引用 0
                        • 小伊小
                          机器人小伊
                          最后由 编辑

                          遇到权限不足的问题时,通常是因为你试图在没有足够权限的情况下写入系统目录。在Linux系统中,/usr/lib/python3/dist-packages/ 通常是由系统管理员管理的目录,普通用户没有权限直接写入。

                          针对你的问题,有几种可能的解决方案:

                          1. 使用sudo命令

                          如果你确定需要安装到系统级别的Python包目录中,并且你有管理员权限,可以使用sudo来运行你的cp命令。例如:

                          sudo cp -r /path/to/your/virtualenv/lib/python3.x/site-packages/espeakng /usr/lib/python3/dist-packages/
                          

                          注意替换/path/to/your/virtualenv/为你的虚拟环境实际路径,以及确保python3.x与你的Python版本相匹配。

                          2. 修改安装位置

                          通常不推荐将库安装到系统级目录,除非你确实需要这样做。一个更好的做法是将库安装到一个用户可写的目录,或者直接使用虚拟环境。

                          • 使用用户本地目录:Python支持在用户本地目录中安装库,这通常位于~/.local/。你可以通过pip install --user来安装到这些目录。
                          • 继续使用虚拟环境:虚拟环境最大的好处之一就是隔离了不同项目的依赖。你可以直接激活虚拟环境来使用安装的库,而不需要复制到系统目录。

                          3. 使用checkinstall或fpm等工具创建包

                          如果你需要为系统创建安装包,可以考虑使用checkinstall或fpm等工具,这些工具可以帮助你将软件打包成Debian包或其他格式,然后你可以通过系统的包管理器来安装。

                          4. 检查和修改目录权限(不推荐)

                          虽然理论上你可以修改/usr/lib/python3/dist-packages/的权限来允许写入,但这通常不是一个好主意,因为这可能会破坏系统的安全性和稳定性。

                          结论

                          通常,最简单和最安全的方法是继续使用虚拟环境,或者如果你确实需要全局安装,使用pip install --user或请求管理员权限来安装到系统目录。如果你正在开发一个软件包,考虑使用包管理工具来创建和分发你的软件。


                          以上为生成回答,仅供参考~

                          我是小伊,已接入ChatGpt,所有回复,仅供参考~

                          S 1 条回复 最后回复 回复 引用 0
                          • S
                            suuunnnn
                            最后由 编辑

                            此回复已被删除!
                            1 条回复 最后回复 回复 引用 0
                            • S
                              suuunnnn @小伊
                              最后由 编辑

                              @小伊 那么如何使用虚拟环境安装我需要的espeakng库并调用库编写代码呢

                              1 条回复 最后回复 回复 引用 0
                              • 小伊小
                                机器人小伊
                                最后由 编辑

                                要在虚拟环境中安装 espeakng 库并编写代码调用它,你需要按照以下步骤操作:

                                步骤 1:安装 Python 和虚拟环境管理工具

                                确保你已经安装了 Python 和 venv(Python 的虚拟环境管理工具)。在大多数现代 Python 安装中,venv 已经包含在内。你可以通过以下命令检查是否安装了 venv:

                                python3 -m venv --version
                                

                                如果没有安装,你可能需要重新安装 Python 或手动安装 venv。

                                步骤 2:创建并激活虚拟环境

                                1. 创建一个新的目录用于你的项目:

                                  mkdir my_espeakng_project
                                  cd my_espeakng_project
                                  
                                2. 创建一个虚拟环境:

                                  python3 -m venv venv
                                  
                                3. 激活虚拟环境:

                                  • 在 Windows 上:

                                    .\venv\Scripts\activate
                                    
                                  • 在 macOS 和 Linux 上:

                                    source venv/bin/activate
                                    

                                  激活后,你应该会在命令行提示符前看到 (venv)。

                                步骤 3:安装 espeakng 库

                                注意:Python 的 pip 包管理器中并没有名为 espeakng 的官方库。但是,有一个 espeak 库可以用于调用 espeak 命令行工具。而 espeakng 是 espeak 的一个分支,通常通过系统包管理器安装。

                                1. 如果你已经通过系统包管理器安装了 espeakng,你可以安装一个 Python 库来调用命令行工具,比如 subprocess 库(这是 Python 内置的,不需要安装)或者第三方库 speak(虽然它调用的是 espeak,但原理相同)。

                                2. 如果你要使用 subprocess 库,不需要额外安装任何东西。但如果你想使用第三方库,比如 pyttsx3,你可以安装它:

                                  pip install pyttsx3
                                  

                                  请注意,pyttsx3 也不直接调用 espeakng,但它提供了一个文本到语音的接口,你可以配置它来使用 espeak 或 espeakng(如果系统路径中可用)。

                                步骤 4:编写代码调用 espeakng

                                由于 espeakng 通常作为命令行工具安装,你可以使用 Python 的 subprocess 库来调用它。以下是一个示例代码:

                                import subprocess
                                
                                def speak_text(text):
                                    # 使用 subprocess 调用 espeakng 命令
                                    result = subprocess.run(['espeakng', text], capture_output=True, text=True)
                                    print(result.stderr)  # 打印任何错误信息
                                
                                if __name__ == "__main__":
                                    text_to_speak = "Hello, this is a test with espeakng!"
                                    speak_text(text_to_speak)
                                

                                步骤 5:运行代码

                                确保你的系统路径中已经包含了 espeakng 命令。然后运行你的 Python 脚本:

                                python your_script_name.py
                                

                                如果 espeakng 已正确安装并在系统路径中可用,你应该能听到文本被朗读出来。

                                总结

                                虽然 Python 的 pip 包管理器中没有直接的 espeakng 库,但你可以通过系统包管理器安装 espeakng,并使用 Python 的 subprocess 库或其他文本到语音库(如 pyttsx3)来调用它。以上步骤应该能帮助你在虚拟环境中设置并运行一个调用 espeakng 的 Python 项目。


                                以上为生成回答,仅供参考~

                                我是小伊,已接入ChatGpt,所有回复,仅供参考~

                                1 条回复 最后回复 回复 引用 0
                                • 第一个帖子
                                  最后一个帖子
                                皖ICP备16016415号-7
                                Powered by NodeBB | 鱼香ROS