相关疑难解决方法(0)

Click将中止进一步执行,因为Python 3配置为使用ASCII作为环境的编码

我将Quokka Python/Flask CMS下载到CentOS7服务器.命令一切正常

sudo python3 manage.py runserver --host 0.0.0.0 --port 80
Run Code Online (Sandbox Code Playgroud)

然后我创建一个文件/etc/init.d/quokkacms.该文件包含以下代码

start() {
        echo -n "Starting quokkacms: "
        python3 /var/www/quokka/manage.py runserver --host 0.0.0.0 --port 80
        touch /var/lock/subsys/quokkacms
        return 0
}
stop() {
        echo -n "Shutting down quokkacms: "
        rm -f /var/lock/subsys/quokkacms
        return 0
}
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)

        ;;
    restart)
        stop
        start
        ;;

    *)
        echo "Usage: quokkacms {start|stop|status|restart}"
        exit 1
        ;;
esac
exit $?
Run Code Online (Sandbox Code Playgroud)

但是我在跑步时遇到错误 sudo service quokkacms start

RuntimeError:Click将中止进一步执行,因为Python 3配置为使用ASCII作为环境的编码.切换到Python 2或参考http://click.pocoo.org/python3/ …

locale redhat centos python-3.x python-click

27
推荐指数
2
解决办法
2万
查看次数

使用python3编码问题并单击包

当lib click检测到运行时是python3但编码是ASCII时,它会突然结束python程序:

RuntimeError: Click will abort further execution because Python 3 was configured to use ASCII as encoding for the environment. Either switch to Python 2 or consult http://click.pocoo.org/python3/ for mitigation steps.
Run Code Online (Sandbox Code Playgroud)

在我的情况下,我发现了这个问题的原因,当我从Mac连接到我的Linux主机时,Terminal.app将SSH会话区域设置为我的Mac区域设置(es_ES.UTF-8)但是我的Linux主机没有安装这样的语言环境(仅限en_US.utf-8).

我应用了一个初步的解决方法来解决它(但它有很多问题,请参阅已接受的答案):

import locale, codecs
# locale.getpreferredencoding() == 'ANSI_X3.4-1968'
if codecs.lookup(locale.getpreferredencoding()).name == 'ascii':
    os.environ['LANG'] = 'en_US.utf-8'
Run Code Online (Sandbox Code Playgroud)

编辑:要获得更好的补丁,请参阅我接受的答案.

我的所有linux主机都安装了'en_US.utf-8'作为语言环境(Fedora默认使用它).

我的问题是:在python3脚本中选择/强制语言环境是否有更好(更强大)的方法?例如,在系统中设置一个可用的语言环境.

也许有一种不同的方法来解决这个问题,但我没有找到它.

encoding command-line-interface python-3.x python-click

11
推荐指数
1
解决办法
3999
查看次数