I just followed the tutorial to set up pyplanet as a server controller for my private tm2-server. Unfortunately, right after starting, pyplanet dies to this:
Code: Select all
[pyplanet@free-tm2 tm2]$ ./manage.py start
INFO [Main][pyplanet.core.management.commands.start] Initiated configuration and environment...
INFO [Main][pyplanet.core.management.commands.start] -------------------------------[ PyPlanet v0.7.0 ]-------------------------------
INFO [Main][pyplanet.god.process] Starting pool process for 'default'...
Process Process-1:
Traceback (most recent call last):
File "/home/pyplanet/.pyenv/versions/3.7.0/lib/python3.7/site-packages/pyplanet/apps/config.py", line 244, in import_app
module = importlib.import_module(module_path)
File "/home/pyplanet/.pyenv/versions/3.7.0/lib/python3.7/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 728, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/home/pyplanet/.pyenv/versions/3.7.0/lib/python3.7/site-packages/pyplanet/apps/core/pyplanet/app.py", line 7, in <module>
from pyplanet.apps.core.pyplanet.setting import SettingComponent
File "/home/pyplanet/.pyenv/versions/3.7.0/lib/python3.7/site-packages/pyplanet/apps/core/pyplanet/setting.py", line 4, in <module>
from pyplanet.apps.core.pyplanet.views.setting import SettingMenuView
File "/home/pyplanet/.pyenv/versions/3.7.0/lib/python3.7/site-packages/pyplanet/apps/core/pyplanet/views/setting.py", line 8, in <module>
from pyplanet.views.generics import ManualListView
File "/home/pyplanet/.pyenv/versions/3.7.0/lib/python3.7/site-packages/pyplanet/views/generics/__init__.py", line 2, in <module>
from .list import ListView, ManualListView
File "/home/pyplanet/.pyenv/versions/3.7.0/lib/python3.7/site-packages/pyplanet/views/generics/list.py", line 4, in <module>
import pandas as pd
File "/home/pyplanet/.pyenv/versions/3.7.0/lib/python3.7/site-packages/pandas/__init__.py", line 55, in <module>
from pandas.core.api import (
File "/home/pyplanet/.pyenv/versions/3.7.0/lib/python3.7/site-packages/pandas/core/api.py", line 24, in <module>
from pandas.core.groupby import Grouper, NamedAgg
File "/home/pyplanet/.pyenv/versions/3.7.0/lib/python3.7/site-packages/pandas/core/groupby/__init__.py", line 1, in <module>
from pandas.core.groupby.generic import ( # noqa: F401
File "/home/pyplanet/.pyenv/versions/3.7.0/lib/python3.7/site-packages/pandas/core/groupby/generic.py", line 44, in <module>
from pandas.core.frame import DataFrame
File "/home/pyplanet/.pyenv/versions/3.7.0/lib/python3.7/site-packages/pandas/core/frame.py", line 88, in <module>
from pandas.core.generic import NDFrame, _shared_docs
File "/home/pyplanet/.pyenv/versions/3.7.0/lib/python3.7/site-packages/pandas/core/generic.py", line 70, in <module>
from pandas.io.formats.format import DataFrameFormatter, format_percentiles
File "/home/pyplanet/.pyenv/versions/3.7.0/lib/python3.7/site-packages/pandas/io/formats/format.py", line 48, in <module>
from pandas.io.common import _expand_user, _stringify_path
File "/home/pyplanet/.pyenv/versions/3.7.0/lib/python3.7/site-packages/pandas/io/common.py", line 3, in <module>
import bz2
File "/home/pyplanet/.pyenv/versions/3.7.0/lib/python3.7/bz2.py", line 19, in <module>
from _bz2 import BZ2Compressor, BZ2Decompressor
ModuleNotFoundError: No module named '_bz2'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/pyplanet/.pyenv/versions/3.7.0/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
self.run()
File "/home/pyplanet/.pyenv/versions/3.7.0/lib/python3.7/multiprocessing/process.py", line 99, in run
self._target(*self._args, **self._kwargs)
File "/home/pyplanet/.pyenv/versions/3.7.0/lib/python3.7/site-packages/pyplanet/god/process.py", line 46, in _run
instance = Controller.prepare(name).instance
File "/home/pyplanet/.pyenv/versions/3.7.0/lib/python3.7/site-packages/pyplanet/core/controller.py", line 18, in prepare
self.__instance = Instance(name)
File "/home/pyplanet/.pyenv/versions/3.7.0/lib/python3.7/site-packages/pyplanet/core/instance.py", line 90, in __init__
self.apps.populate(settings.MANDATORY_APPS, in_order=True)
File "/home/pyplanet/.pyenv/versions/3.7.0/lib/python3.7/site-packages/pyplanet/apps/apps.py", line 58, in populate
app = AppConfig.import_app(entry, self.instance)
File "/home/pyplanet/.pyenv/versions/3.7.0/lib/python3.7/site-packages/pyplanet/apps/config.py", line 257, in import_app
'Can\'t load the app {}. Can\'t find the app config!'.format(entry)
pyplanet.core.exceptions.ImproperlyConfigured: Can't load the app pyplanet.apps.core.pyplanet.app.PyPlanetConfig. Can't find the app config!
CRITICAL [Main][pyplanet.god.pool] The instance 'default' just died. We will not restart!
CRITICAL [Main][pyplanet.god.pool] All instances died. Quitting now...
For the record, the system I am using:
OS: Oracle Linux 7.7 (like CentOS or RH)
Kernel: 4.14.35-1902.5.2.2.el7uek.x86_64 GNU/Linux
I disabled SELinux, but the error shows up again.
pyplanet config - base.py:
Code: Select all
"""
This file contains the basic settings and overrides the default ones that are defined in the core.
Documentation: http://pypla.net/
If you want to use other configuration methods like YAML or JSON files, take a look at http://pypla.net/ and head to the
configuration pages.
"""
import os
# Set the root_path to the root of our project.
ROOT_PATH = os.path.dirname(os.path.dirname(__file__))
# Set the temporary location for the project.
TMP_PATH = os.path.join(ROOT_PATH, 'tmp')
# Create temporary folder if not exists.
if not os.path.exists(TMP_PATH):
os.mkdir(TMP_PATH)
# Enable debug mode to get verbose output, not report any errors and dynamically use the DEBUG in your code
# for extra verbosity of logging/output.
DEBUG = bool(os.environ.get('PYPLANET_DEBUG', False))
# Add your pools (the controller instances per dedicated here) or leave as it is to use a single instance only.
POOLS = [
'default'
]
# Owners are logins of the server owners, the owners always get *ALL* the permissions in the system.
OWNERS = {
'default': [
'jaemcbean'
]
}
# Allow self-upgrading the installation. Disable on shared servers with one installation (hosting environment)!
SELF_UPGRADE = True
# Databases configuration holds an dictionary with information of the database backend.
# Please refer to the documentation for all examples. http://pypla.net/
DATABASES = {
'default': {
'ENGINE': 'peewee_async.MySQLDatabase',
'NAME': 'pyplanet',
'OPTIONS': {
'host': 'xxx',
'user': 'pyplanet',
'password': 'xxx',
'charset': 'utf8mb4',
}
}
}
# Dedicated configuration holds the different dedicated servers that the instances will run on including the names of
# the instances.
DEDICATED = {
'default': {
'HOST': '127.0.0.1',
'PORT': '5000',
'USER': 'SuperAdmin',
'PASSWORD': 'xxx',
}
}
# Map configuration is a set of configuration options related to match settings etc.
# Matchsettings filename.
MAP_MATCHSETTINGS = {
'default': 'autosave.txt',
}
# Blacklist file is managed by the dedicated server and will be loaded and writen to by PyPlanet once a
# player gets blacklisted. The default will be the filename Maniaplanet always uses and is generic.
BLACKLIST_FILE = {
'default': 'blacklist.txt'
}
# The storage configuration contains the same instance mapping of the dedicated servers and is used
# to access the filesystem on the dedicated server location.
# Please refer to the documentation for more information. http://pypla.net/
STORAGE = {
'default': {
'DRIVER': 'pyplanet.core.storage.drivers.local.LocalDriver',
'OPTIONS': {},
}
}
# Define any cache backends that can be used by the core and the plugins to cache data.
# This is not yet implemented. As soon as it's implemented you can activate it with the documentation, available on
# http://pypla.net/
# CACHE = {
# 'default': {
#
# }
# }
# Songs is a list of URLs to .ogg files of songs to be played by the music server.
SONGS = {
'default': []
}
Code: Select all
This file contains the apps & apps settings and overrides the default ones that are defined in the core.
Documentation: http://pypla.net/
If you want to use other configuration methods like YAML or JSON files, take a look at http://pypla.net/ and head to the
configuration pages.
"""
# In the apps dictionary and array you configure the apps (or plugins) are loaded for specific pools (controllers).
# Be aware that the list will *ALWAYS* be prepended after the mandatory defaults are loaded in place.
# The mandatory defaults are specific per version, refer to the documentation:
# DOCUMENTATION: http://pypla.net/
APPS = {
'default': [
'pyplanet.apps.contrib.admin',
'pyplanet.apps.contrib.jukebox',
'pyplanet.apps.contrib.karma',
'pyplanet.apps.contrib.local_records',
'pyplanet.apps.contrib.dedimania', # Will be disabled in Shootmania automatically.
'pyplanet.apps.contrib.players',
'pyplanet.apps.contrib.info',
'pyplanet.apps.contrib.mx',
'pyplanet.apps.contrib.transactions',
'pyplanet.apps.contrib.sector_times',
'pyplanet.apps.contrib.clock',
# You can optionally enable one of the following apps. Please look at this page for more information:
# http://pypla.net/#app-docs
# Live Ranking App. Useful when playing in Laps, Rounds and all sort of Trackmania game modes.
# 'pyplanet.apps.contrib.live_rankings',
# Best CP Widget on top of the screen for the Trackmania game.
# 'pyplanet.apps.contrib.best_cps',
# Use chat-based votes instead of the callvotes of the dedicated server with the voting app.
# 'pyplanet.apps.contrib.voting',
# Dynamic Points Limit is meant for Shootmania Royal.
# 'pyplanet.apps.contrib.dynamic_points',
# Waiting Queue. Enable on limited player servers to fairly queue players.
# 'pyplanet.apps.contrib.queue',
# Music Server App. Enable to queue your music together on the server.
# 'pyplanet.apps.contrib.music_server',
]
}
JMB